Compare commits

...

2 Commits

Author SHA1 Message Date
673e7a69f5 User actor in activitypub 2025-03-11 22:19:57 +08:00
b151acd6ac 🐛 Fix activitypub 2025-03-11 22:08:28 +08:00
2 changed files with 23 additions and 0 deletions

View File

@ -54,6 +54,7 @@ func apUserOutbox(c *fiber.Ctx) error {
}
tx, err := UniversalPostFilter(c, database.C)
tx.Where("publisher_id = ? AND reply_id IS NULL", publisher.ID)
if err != nil {
return fiber.NewError(fiber.StatusBadRequest, err.Error())
}
@ -125,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)
}

View File

@ -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")