summaryrefslogtreecommitdiff
path: root/internal/typeutils/internaltoas.go
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2024-09-16 22:41:04 +0200
committerLibravatar GitHub <noreply@github.com>2024-09-16 22:41:04 +0200
commit4bd5e68b2b811eef42045149f4b7abdc6a2ba9e7 (patch)
tree27621eebf1ba12b78608c2e855244c1c74e3e352 /internal/typeutils/internaltoas.go
parent[bugfix] Be more lenient when parsing mastodown following.csv (#3311) (diff)
downloadgotosocial-4bd5e68b2b811eef42045149f4b7abdc6a2ba9e7.tar.xz
[bugfix] Ensure id set on outgoing Reject + Accept (#3312)
Diffstat (limited to 'internal/typeutils/internaltoas.go')
-rw-r--r--internal/typeutils/internaltoas.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/internal/typeutils/internaltoas.go b/internal/typeutils/internaltoas.go
index 03710bec8..d317d6f39 100644
--- a/internal/typeutils/internaltoas.go
+++ b/internal/typeutils/internaltoas.go
@@ -2005,3 +2005,49 @@ func (c *Converter) InteractionReqToASAccept(
return accept, nil
}
+
+// InteractionReqToASReject converts a *gtsmodel.InteractionRequest
+// to an ActivityStreams Reject, addressed to the interacting account.
+func (c *Converter) InteractionReqToASReject(
+ ctx context.Context,
+ req *gtsmodel.InteractionRequest,
+) (vocab.ActivityStreamsReject, error) {
+ reject := streams.NewActivityStreamsReject()
+
+ rejectID, err := url.Parse(req.URI)
+ if err != nil {
+ return nil, gtserror.Newf("invalid reject uri: %w", err)
+ }
+
+ actorIRI, err := url.Parse(req.TargetAccount.URI)
+ if err != nil {
+ return nil, gtserror.Newf("invalid account uri: %w", err)
+ }
+
+ objectIRI, err := url.Parse(req.InteractionURI)
+ if err != nil {
+ return nil, gtserror.Newf("invalid target uri: %w", err)
+ }
+
+ toIRI, err := url.Parse(req.InteractingAccount.URI)
+ if err != nil {
+ return nil, gtserror.Newf("invalid interacting account uri: %w", err)
+ }
+
+ // Set id to the URI of
+ // interaction request.
+ ap.SetJSONLDId(reject, rejectID)
+
+ // Actor is the account that
+ // owns the approval / reject.
+ ap.AppendActorIRIs(reject, actorIRI)
+
+ // Object is the interaction URI.
+ ap.AppendObjectIRIs(reject, objectIRI)
+
+ // Address to the owner
+ // of interaction URI.
+ ap.AppendTo(reject, toIRI)
+
+ return reject, nil
+}