diff --git a/app/Transformer/ActivityPub/StatusTransformer.php b/app/Transformer/ActivityPub/StatusTransformer.php new file mode 100644 index 000000000..4b48b1f65 --- /dev/null +++ b/app/Transformer/ActivityPub/StatusTransformer.php @@ -0,0 +1,62 @@ + [ + 'https://www.w3.org/ns/activitystreams', + 'https://w3id.org/security/v1', + [ + "manuallyApprovesFollowers" => "as:manuallyApprovesFollowers", + "featured" => [ + "https://pixelfed.org/ns#featured" => ["@type" => "@id"], + ] + ] + ], + 'id' => $status->url(), + + // TODO: handle other types + 'type' => 'Note', + + // XXX: CW Title + 'summary' => null, + 'content' => $status->rendered ?? $status->caption, + 'inReplyTo' => null, + + // TODO: fix date format + 'published' => $status->created_at->toAtomString(), + 'url' => $status->url(), + 'attributedTo' => $status->profile->permalink(), + 'to' => [ + // TODO: handle proper scope + 'https://www.w3.org/ns/activitystreams#Public' + ], + 'cc' => [ + // TODO: add cc's + $status->profile->permalink('/followers'), + ], + 'sensitive' => (bool) $status->is_nsfw, + 'atomUri' => $status->url(), + 'inReplyToAtomUri' => null, + 'conversation' => $status->url(), + 'attachment' => $status->media->map(function($media) { + return [ + 'type' => 'Document', + 'mediaType' => $media->mime, + 'url' => $media->url(), + 'name' => null + ]; + }), + 'tag' => [] + ]; + } + +} \ No newline at end of file