From 468ae1ef60f61b0d10e4a4a1df45d280291e3cb5 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 27 May 2019 13:00:39 -0600 Subject: [PATCH] Add StatusStatelessTransformer --- .../Api/StatusStatelessTransformer.php | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 app/Transformer/Api/StatusStatelessTransformer.php diff --git a/app/Transformer/Api/StatusStatelessTransformer.php b/app/Transformer/Api/StatusStatelessTransformer.php new file mode 100644 index 000000000..12e444322 --- /dev/null +++ b/app/Transformer/Api/StatusStatelessTransformer.php @@ -0,0 +1,84 @@ + (string) $status->id, + 'uri' => $status->url(), + 'url' => $status->url(), + 'in_reply_to_id' => $status->in_reply_to_id, + 'in_reply_to_account_id' => $status->in_reply_to_profile_id, + 'reblog' => null, + 'content' => $status->rendered ?? $status->caption, + 'created_at' => $status->created_at->format('c'), + 'emojis' => [], + 'reblogs_count' => $status->shares()->count(), + 'favourites_count' => $status->likes()->count(), + 'reblogged' => null, + 'favourited' => null, + 'muted' => null, + 'sensitive' => (bool) $status->is_nsfw, + 'spoiler_text' => $status->cw_summary, + 'visibility' => $status->visibility, + 'application' => [ + 'name' => 'web', + 'website' => null + ], + 'language' => null, + 'pinned' => null, + + 'pf_type' => $status->type ?? $status->setType(), + 'reply_count' => (int) $status->reply_count, + 'comments_disabled' => $status->comments_disabled ? true : false, + 'thread' => false, + 'replies' => [], + 'parent' => $status->parent() ? $this->transform($status->parent()) : [], + ]; + } + + public function includeAccount(Status $status) + { + $account = $status->profile; + + return $this->item($account, new AccountTransformer()); + } + + public function includeMentions(Status $status) + { + $mentions = $status->mentions; + + return $this->collection($mentions, new MentionTransformer()); + } + + public function includeMediaAttachments(Status $status) + { + return Cache::remember('status:transformer:media:attachments:'.$status->id, now()->addMinutes(3), function() use($status) { + if(in_array($status->type, ['photo', 'video'])) { + $media = $status->media()->orderBy('order')->get(); + return $this->collection($media, new MediaTransformer()); + } + }); + } + + public function includeTags(Status $status) + { + $tags = $status->hashtags; + + return $this->collection($tags, new HashtagTransformer()); + } +}