Add attachments to mastoapi statuses.
This commit is contained in:
parent
96473dfac0
commit
fc10875895
|
@ -24,6 +24,8 @@ def render("status.json", %{activity: %{data: %{"object" => object}} = activity}
|
||||||
repeated = opts[:for] && opts[:for].ap_id in (object["announcements"] || [])
|
repeated = opts[:for] && opts[:for].ap_id in (object["announcements"] || [])
|
||||||
favorited = opts[:for] && opts[:for].ap_id in (object["likes"] || [])
|
favorited = opts[:for] && opts[:for].ap_id in (object["likes"] || [])
|
||||||
|
|
||||||
|
attachments = render_many(object["attachment"] || [], StatusView, "attachment.json", as: :attachment)
|
||||||
|
|
||||||
%{
|
%{
|
||||||
id: activity.id,
|
id: activity.id,
|
||||||
uri: object["id"],
|
uri: object["id"],
|
||||||
|
@ -42,11 +44,29 @@ def render("status.json", %{activity: %{data: %{"object" => object}} = activity}
|
||||||
sensitive: sensitive,
|
sensitive: sensitive,
|
||||||
spoiler_text: "",
|
spoiler_text: "",
|
||||||
visibility: "public",
|
visibility: "public",
|
||||||
media_attachments: [], # fix
|
media_attachments: attachments,
|
||||||
mentions: mentions,
|
mentions: mentions,
|
||||||
tags: [], # fix,
|
tags: [], # fix,
|
||||||
application: nil,
|
application: nil,
|
||||||
language: nil
|
language: nil
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def render("attachment.json", %{attachment: attachment}) do
|
||||||
|
[%{"mediaType" => media_type, "href" => href} | _] = attachment["url"]
|
||||||
|
|
||||||
|
type = cond do
|
||||||
|
String.contains?(media_type, "image") -> "image"
|
||||||
|
String.contains?(media_type, "video") -> "video"
|
||||||
|
true -> "unknown"
|
||||||
|
end
|
||||||
|
|
||||||
|
%{
|
||||||
|
id: attachment["uuid"],
|
||||||
|
url: href,
|
||||||
|
remote_url: href,
|
||||||
|
preview_url: href,
|
||||||
|
type: type
|
||||||
|
}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do
|
||||||
use Pleroma.DataCase
|
use Pleroma.DataCase
|
||||||
|
|
||||||
alias Pleroma.Web.MastodonAPI.{StatusView, AccountView}
|
alias Pleroma.Web.MastodonAPI.{StatusView, AccountView}
|
||||||
alias Pleroma.User
|
alias Pleroma.{User, Object}
|
||||||
alias Pleroma.Web.OStatus
|
alias Pleroma.Web.OStatus
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
|
||||||
|
@ -50,4 +50,28 @@ test "contains mentions" do
|
||||||
|
|
||||||
assert status.mentions == [AccountView.render("mention.json", %{user: user})]
|
assert status.mentions == [AccountView.render("mention.json", %{user: user})]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "attachments" do
|
||||||
|
incoming = File.read!("test/fixtures/incoming_reply_mastodon.xml")
|
||||||
|
object = %{
|
||||||
|
"type" => "Image",
|
||||||
|
"url" => [
|
||||||
|
%{
|
||||||
|
"mediaType" => "image/png",
|
||||||
|
"href" => "someurl"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"uuid" => 6
|
||||||
|
}
|
||||||
|
|
||||||
|
expected = %{
|
||||||
|
id: 6,
|
||||||
|
type: "image",
|
||||||
|
url: "someurl",
|
||||||
|
remote_url: "someurl",
|
||||||
|
preview_url: "someurl"
|
||||||
|
}
|
||||||
|
|
||||||
|
assert expected == StatusView.render("attachment.json", %{attachment: object})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue