Add attachments to mastoapi statuses.
This commit is contained in:
parent
96473dfac0
commit
fc10875895
2 changed files with 46 additions and 2 deletions
|
@ -24,6 +24,8 @@ def render("status.json", %{activity: %{data: %{"object" => object}} = activity}
|
|||
repeated = opts[:for] && opts[:for].ap_id in (object["announcements"] || [])
|
||||
favorited = opts[:for] && opts[:for].ap_id in (object["likes"] || [])
|
||||
|
||||
attachments = render_many(object["attachment"] || [], StatusView, "attachment.json", as: :attachment)
|
||||
|
||||
%{
|
||||
id: activity.id,
|
||||
uri: object["id"],
|
||||
|
@ -42,11 +44,29 @@ def render("status.json", %{activity: %{data: %{"object" => object}} = activity}
|
|||
sensitive: sensitive,
|
||||
spoiler_text: "",
|
||||
visibility: "public",
|
||||
media_attachments: [], # fix
|
||||
media_attachments: attachments,
|
||||
mentions: mentions,
|
||||
tags: [], # fix,
|
||||
application: nil,
|
||||
language: nil
|
||||
}
|
||||
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
|
||||
|
|
|
@ -2,7 +2,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do
|
|||
use Pleroma.DataCase
|
||||
|
||||
alias Pleroma.Web.MastodonAPI.{StatusView, AccountView}
|
||||
alias Pleroma.User
|
||||
alias Pleroma.{User, Object}
|
||||
alias Pleroma.Web.OStatus
|
||||
import Pleroma.Factory
|
||||
|
||||
|
@ -50,4 +50,28 @@ test "contains mentions" do
|
|||
|
||||
assert status.mentions == [AccountView.render("mention.json", %{user: user})]
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue