From 673e7a69f5e39b0bbf29a80743896c9186629154 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Tue, 11 Mar 2025 22:19:57 +0800 Subject: [PATCH] :sparkles: User actor in activitypub --- pkg/internal/http/api/activitypub_api.go | 21 +++++++++++++++++++++ pkg/internal/http/api/index.go | 1 + 2 files changed, 22 insertions(+) diff --git a/pkg/internal/http/api/activitypub_api.go b/pkg/internal/http/api/activitypub_api.go index 3b4dd5e..7df6c3e 100644 --- a/pkg/internal/http/api/activitypub_api.go +++ b/pkg/internal/http/api/activitypub_api.go @@ -126,3 +126,24 @@ func apUserOutbox(c *fiber.Ctx) error { return c.JSON(outbox) } + +func apUserActor(c *fiber.Ctx) error { + name := c.Params("name") + + var publisher models.Publisher + if err := database.C.Where("name = ?", name).First(&publisher).Error; err != nil { + return c.Status(404).JSON(fiber.Map{"error": "User not found"}) + } + + id := services.GetActivityID("/users/" + publisher.Name) + actor := activitypub.Actor{ + ID: id, + Inbox: id + "/inbox", + Outbox: id + "/outbox", + Type: activitypub.PersonType, + Name: activitypub.DefaultNaturalLanguageValue(publisher.Name), + PreferredUsername: activitypub.DefaultNaturalLanguageValue(publisher.Nick), + } + + return c.JSON(actor) +} diff --git a/pkg/internal/http/api/index.go b/pkg/internal/http/api/index.go index bca4e90..2dd2098 100644 --- a/pkg/internal/http/api/index.go +++ b/pkg/internal/http/api/index.go @@ -12,6 +12,7 @@ func MapAPIs(app *fiber.App, baseURL string) { { activitypub.Post("/users/:name/inbox", apUserInbox) activitypub.Get("/users/:name/outbox", apUserOutbox) + activitypub.Get("/users/:name", apUserActor) } publishers := api.Group("/publishers").Name("Publisher API")