diff --git a/models/activitypub/actor.go b/models/activitypub/actor.go index aeb8692c78..b6ba240e20 100644 --- a/models/activitypub/actor.go +++ b/models/activitypub/actor.go @@ -6,8 +6,7 @@ import ( "strings" ) -// TODO: Name ActorId ? -type ActorData struct { +type ActorID struct { schema string userId string path string @@ -16,7 +15,7 @@ type ActorData struct { } // TODO: Align validation-api to example from dda-devops-build -func (a ActorData) ValidateActorData() error { +func (a ActorID) ValidateActorID() error { if a.schema == "" || a.host == "" { return fmt.Errorf("the actor ID was not valid: Invalid Schema or Host") @@ -30,18 +29,18 @@ func (a ActorData) ValidateActorData() error { } -func ParseActorData(actor string) (ActorData, error) { +func ParseActorID(actor string) (ActorID, error) { u, err := url.Parse(actor) // check if userID IRI is well formed url if err != nil { - return ActorData{}, fmt.Errorf("the actor ID was not a valid IRI: %v", err) + return ActorID{}, fmt.Errorf("the actor ID was not a valid IRI: %v", err) } pathWithUserID := strings.Split(u.Path, "/") userId := pathWithUserID[len(pathWithUserID)-1] - return ActorData{ + return ActorID{ schema: u.Scheme, userId: userId, host: u.Host, diff --git a/models/activitypub/actor_test.go b/models/activitypub/actor_test.go index 1188a78afd..8d42372fc6 100644 --- a/models/activitypub/actor_test.go +++ b/models/activitypub/actor_test.go @@ -10,17 +10,17 @@ import ( func Test_ActorParser(t *testing.T) { type testPair struct { item string - want ActorData + want ActorID } tests := map[string]testPair{ "empty": { item: "", - want: ActorData{}, + want: ActorID{}, }, "withValidActorID": { item: "https://repo.prod.meissa.de/api/v1/activitypub/user-id/1", - want: ActorData{ + want: ActorID{ schema: "https", userId: "1", path: "/api/v1/activitypub/user-id/1", @@ -30,7 +30,7 @@ func Test_ActorParser(t *testing.T) { }, "withInvalidActorID": { item: "https://repo.prod.meissa.de/api/activitypub/user-id/1", - want: ActorData{ + want: ActorID{ schema: "https", userId: "1", path: "/api/v1/activitypub/user-id/1", @@ -42,7 +42,7 @@ func Test_ActorParser(t *testing.T) { for name, _ := range tests { t.Run(name, func(t *testing.T) { - _, err := ParseActorData(tests[name].item) + _, err := ParseActorID(tests[name].item) if err != nil { t.Errorf("parseActor() error = \"%v\"", err) diff --git a/routers/api/v1/activitypub/repository.go b/routers/api/v1/activitypub/repository.go index 72aaca61c5..b6fb98d1ae 100644 --- a/routers/api/v1/activitypub/repository.go +++ b/routers/api/v1/activitypub/repository.go @@ -88,7 +88,7 @@ func RepositoryInbox(ctx *context.APIContext) { // assume actor is: "actor": "https://codeberg.org/api/v1/activitypub/user-id/12345" - NB: This might be actually the ID? Maybe check vocabulary. // TODO: validate input in front of parsing. // parse actor - actor, err := activitypub.ParseActorData(opt.Actor.GetID().String()) + actor, err := activitypub.ParseActorID(opt.Actor.GetID().String()) // Is the actor IRI well formed? if err != nil { @@ -96,7 +96,7 @@ func RepositoryInbox(ctx *context.APIContext) { } // Is the ActorData Struct valid? - err = actor.ValidateActorData() + err = actor.ValidateActorID() if err != nil { panic(err)