Daniel Supernault пре 7 година
родитељ
комит
3193ee2017
1 измењених фајлова са 62 додато и 0 уклоњено
  1. 62 0
      app/Transformer/ActivityPub/StatusTransformer.php

+ 62 - 0
app/Transformer/ActivityPub/StatusTransformer.php

@@ -0,0 +1,62 @@
+<?php
+
+namespace App\Transformer\ActivityPub;
+
+use App\{Profile, Status};
+use League\Fractal;
+
+class StatusTransformer extends Fractal\TransformerAbstract
+{
+
+  public function transform(Status $status)
+  {
+      return [
+          '@context' => [
+            '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' => []
+      ];
+  }
+
+}