Twitter Representers: Handle Mastodon attachments.
[akkoma] / lib / pleroma / web / twitter_api / representers / object_representer.ex
1 defmodule Pleroma.Web.TwitterAPI.Representers.ObjectRepresenter do
2 use Pleroma.Web.TwitterAPI.Representers.BaseRepresenter
3 alias Pleroma.Object
4
5 def to_map(%Object{data: %{"url" => [url | _]}} = object, _opts) do
6 data = object.data
7 %{
8 url: url["href"] |> Pleroma.Web.MediaProxy.url(),
9 mimetype: url["mediaType"],
10 id: data["uuid"],
11 oembed: false
12 }
13 end
14
15 def to_map(%Object{data: %{"url" => url} = data}, _opts) when is_binary(url) do
16 %{
17 url: url |> Pleroma.Web.MediaProxy.url(),
18 mimetype: data["mediaType"],
19 id: data["uuid"],
20 oembed: false
21 }
22 end
23
24 def to_map(%Object{}, _opts) do
25 %{}
26 end
27
28 # If we only get the naked data, wrap in an object
29 def to_map(%{} = data, opts) do
30 to_map(%Object{data: data}, opts)
31 end
32 end