diff options
Diffstat (limited to 'db/actor.go')
-rw-r--r-- | db/actor.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/db/actor.go b/db/actor.go new file mode 100644 index 0000000..51c8f41 --- /dev/null +++ b/db/actor.go @@ -0,0 +1,51 @@ +package db + +import ( + "fmt" + "regexp" + "strings" + + "github.com/FChannel0/FChannel-Server/activitypub" +) + +func GetActorFromPath(location string, prefix string) (activitypub.Actor, error) { + pattern := fmt.Sprintf("%s([^/\n]+)(/.+)?", prefix) + re := regexp.MustCompile(pattern) + match := re.FindStringSubmatch(location) + + var actor string + + if len(match) < 1 { + actor = "/" + } else { + actor = strings.Replace(match[1], "/", "", -1) + } + + if actor == "/" || actor == "outbox" || actor == "inbox" || actor == "following" || actor == "followers" { + actor = "main" + } + + var nActor activitypub.Actor + + nActor, err := GetActorByNameFromDB(actor) + if err != nil { + return nActor, err + } + + if nActor.Id == "" { + nActor = GetActorByName(actor) + } + + return nActor, nil +} + +func GetActorByName(name string) activitypub.Actor { + var actor activitypub.Actor + for _, e := range Boards { + if e.Actor.Name == name { + actor = e.Actor + } + } + + return actor +} |