aboutsummaryrefslogtreecommitdiffstats
path: root/routers/api/v1/activitypub
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-04-04 10:08:23 +0800
committerGitHub <noreply@github.com>2023-04-04 10:08:23 +0800
commit17f23182ffdada3dee6a01ab2b49547e680bb02c (patch)
treefd0a62a042183da3dca5911440db68ab2f12b1bb /routers/api/v1/activitypub
parent5115ffa90c959086704b6e3437214a192de7b8a7 (diff)
downloadgitea-17f23182ffdada3dee6a01ab2b49547e680bb02c.tar.gz
gitea-17f23182ffdada3dee6a01ab2b49547e680bb02c.zip
Use User.ID instead of User.Name in ActivityPub API for Person IRI (#23823)
Thanks to @trwnh Close #23802 The ActivityPub id is an HTTPS URI that should remain constant, even if the user changes their name.
Diffstat (limited to 'routers/api/v1/activitypub')
-rw-r--r--routers/api/v1/activitypub/person.go20
1 files changed, 11 insertions, 9 deletions
diff --git a/routers/api/v1/activitypub/person.go b/routers/api/v1/activitypub/person.go
index 492930b849..bc6b82b179 100644
--- a/routers/api/v1/activitypub/person.go
+++ b/routers/api/v1/activitypub/person.go
@@ -4,6 +4,7 @@
package activitypub
import (
+ "fmt"
"net/http"
"strings"
@@ -18,22 +19,23 @@ import (
// Person function returns the Person actor for a user
func Person(ctx *context.APIContext) {
- // swagger:operation GET /activitypub/user/{username} activitypub activitypubPerson
+ // swagger:operation GET /activitypub/user-id/{user-id} activitypub activitypubPerson
// ---
// summary: Returns the Person actor for a user
// produces:
// - application/json
// parameters:
- // - name: username
+ // - name: user-id
// in: path
- // description: username of the user
- // type: string
+ // description: user ID of the user
+ // type: integer
// required: true
// responses:
// "200":
// "$ref": "#/responses/ActivityPub"
- link := strings.TrimSuffix(setting.AppURL, "/") + "/api/v1/activitypub/user/" + ctx.ContextUser.Name
+ // TODO: the setting.AppURL during the test doesn't follow the definition: "It always has a '/' suffix"
+ link := fmt.Sprintf("%s/api/v1/activitypub/user-id/%d", strings.TrimSuffix(setting.AppURL, "/"), ctx.ContextUser.ID)
person := ap.PersonNew(ap.IRI(link))
person.Name = ap.NaturalLanguageValuesNew()
@@ -85,16 +87,16 @@ func Person(ctx *context.APIContext) {
// PersonInbox function handles the incoming data for a user inbox
func PersonInbox(ctx *context.APIContext) {
- // swagger:operation POST /activitypub/user/{username}/inbox activitypub activitypubPersonInbox
+ // swagger:operation POST /activitypub/user-id/{user-id}/inbox activitypub activitypubPersonInbox
// ---
// summary: Send to the inbox
// produces:
// - application/json
// parameters:
- // - name: username
+ // - name: user-id
// in: path
- // description: username of the user
- // type: string
+ // description: user ID of the user
+ // type: integer
// required: true
// responses:
// "204":