From 976256bf3d8ea4e9fccabe2e0c9011e582ad1106 Mon Sep 17 00:00:00 2001 From: erik Date: Thu, 7 Dec 2023 13:21:26 +0100 Subject: [PATCH] Refactor if conditional to switch, use split up functions --- routers/api/v1/activitypub/repository.go | 44 ++++++++++++++++-------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/routers/api/v1/activitypub/repository.go b/routers/api/v1/activitypub/repository.go index c7e20dbe74..0b077f7b91 100644 --- a/routers/api/v1/activitypub/repository.go +++ b/routers/api/v1/activitypub/repository.go @@ -229,6 +229,8 @@ func RepositoryInbox(ctx *context.APIContext) { // "204": // "$ref": "#/responses/empty" + var user *user_model.User + log.Info("RepositoryInbox: repo %v, %v", ctx.Repo.Repository.OwnerName, ctx.Repo.Repository.Name) activity := web.GetForm(ctx).(*forgefed.Star) log.Info("RepositoryInbox: Activity.Source %v", activity.Source) @@ -264,24 +266,36 @@ func RepositoryInbox(ctx *context.APIContext) { panic(fmt.Errorf("searching for user failed: %v", err)) } - if len(users) == 0 { - // ToDo: We need a remote server with federation enabled to properly test this - - body, err := getBody(remoteStargazer, ctx.Repo.Owner.HTMLURL(), ctx) - if err != nil { - panic(fmt.Errorf("http get failed: %v", err)) + switch len(users) { + case 0: + { + body, err := getBody(remoteStargazer, ctx.Repo.Owner.HTMLURL(), ctx) + if err != nil { + panic(fmt.Errorf("http get failed: %v", err)) + } + person, err := unmarshallPersonJSON(body) + if err != nil { + panic(fmt.Errorf("getting user failed: %v", err)) + } + user, err = createFederatedUserFromPerson(person, remoteStargazer) + if err != nil { + panic(fmt.Errorf("create federated user: %w", err)) + } + err = saveFederatedUserRecord(ctx, user) + if err != nil { + panic(fmt.Errorf("save user: %w", err)) + } } - - person, err := unmarshallPersonJSON(body) - if err != nil { - panic(fmt.Errorf("getting user failed: %v", err)) + case 1: + { + user = users[0] + log.Info("%v", user) } - - // create user - err = createFederatedUserFromPerson(ctx, person, remoteStargazer) - if err != nil { - panic(fmt.Errorf("createUser: %w", err)) + default: + { + panic(fmt.Errorf("found more than one matches for federated users")) } + } } else { // use first user