diff options
author | 2024-09-16 22:41:04 +0200 | |
---|---|---|
committer | 2024-09-16 22:41:04 +0200 | |
commit | 4bd5e68b2b811eef42045149f4b7abdc6a2ba9e7 (patch) | |
tree | 27621eebf1ba12b78608c2e855244c1c74e3e352 /internal/typeutils/internaltoas.go | |
parent | [bugfix] Be more lenient when parsing mastodown following.csv (#3311) (diff) | |
download | gotosocial-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.go | 46 |
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 +} |