Web.MastodonAPI.MastodonAPIController: generic get_status_card/1 function for MastoAPI 2.6.x

Mastodon API 2.6.x added a card key to the Status object so the Card can be shown in the timeline without an extra request at each status.
This commit is contained in:
Haelwenn (lanodan) Monnier 2019-01-21 00:53:41 +01:00 committed by William Pitcock
parent 3f64379b13
commit 39863236eb

View file

@ -1329,22 +1329,23 @@ defp status_first_external_url(content) do
|> Enum.at(0) |> Enum.at(0)
end end
def status_card(conn, %{"id" => status_id}) do def get_status_card(status_id) do
with %Activity{} = activity <- Repo.get(Activity, status_id), with %Activity{} = activity <- Repo.get(Activity, status_id),
true <- ActivityPub.is_public?(activity), true <- ActivityPub.is_public?(activity),
page_url <- status_first_external_url(activity.data["object"]["content"]), page_url <- status_first_external_url(activity.data["object"]["content"]),
{:ok, rich_media} <- Pleroma.Web.RichMedia.Parser.parse(page_url) do {:ok, rich_media} <- Pleroma.Web.RichMedia.Parser.parse(page_url) do
card =
rich_media rich_media
|> Map.take([:image, :title, :url, :description]) |> Map.take([:image, :title, :url, :description])
|> Map.put(:type, "link") |> Map.put(:type, "link")
json(conn, card)
else else
_ -> json(conn, %{}) _ -> %{}
end end
end end
def status_card(conn, %{"id" => status_id}) do
json(conn, get_status_card(status_id))
end
def try_render(conn, target, params) def try_render(conn, target, params)
when is_binary(target) do when is_binary(target) do
res = render(conn, target, params) res = render(conn, target, params)