From 8b0cee699d5ad6c856e5a5cbe83e623e8e453fac Mon Sep 17 00:00:00 2001 From: Michael Jerger Date: Fri, 27 Oct 2023 20:13:51 +0200 Subject: [PATCH] fill in some minimal information to an actor --- routers/api/v1/activitypub/repository.go | 27 ++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/routers/api/v1/activitypub/repository.go b/routers/api/v1/activitypub/repository.go index 1f2599f0de..9805c0f4a1 100644 --- a/routers/api/v1/activitypub/repository.go +++ b/routers/api/v1/activitypub/repository.go @@ -1,12 +1,21 @@ -// Copyright 2023 The Gitea forgejoAuthors. All rights reserved. +// Copyright 2023 The forgejo Authors. All rights reserved. // SPDX-License-Identifier: MIT package activitypub import ( + "fmt" "net/http" + "strings" + "code.gitea.io/gitea/modules/activitypub" "code.gitea.io/gitea/modules/context" + "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/setting" + + ap "github.com/go-ap/activitypub" + //f3 "lab.forgefriends.org/friendlyforgeformat/gof3" + "github.com/go-ap/jsonld" ) // Repository function returns the Repository actor for a repo @@ -26,7 +35,21 @@ func Repository(ctx *context.APIContext) { // "200": // "$ref": "#/responses/ActivityPub" - ctx.Status(http.StatusNoContent) + // TODO: Mabe we should use F3 Repo instead? + link := fmt.Sprintf("%s/api/v1/activitypub/repoistory-id/%d", strings.TrimSuffix(setting.AppURL, "/"), ctx.Repo.Repository.ID) + repository := ap.ApplicationNew(ap.IRI(link)) + repository.Name.Set("en", ap.Content(ctx.Repo.Repository.Name)) + + binary, err := jsonld.WithContext(jsonld.IRI(ap.ActivityBaseURI), jsonld.IRI(ap.SecurityContextURI)).Marshal(repository) + if err != nil { + ctx.ServerError("MarshalJSON", err) + return + } + ctx.Resp.Header().Add("Content-Type", activitypub.ActivityStreamsContentType) + ctx.Resp.WriteHeader(http.StatusOK) + if _, err = ctx.Resp.Write(binary); err != nil { + log.Error("write to resp err: %v", err) + } } // PersonInbox function handles the incoming data for a repository inbox