diff options
Diffstat (limited to 'lib')
4 files changed, 10 insertions, 6 deletions
diff --git a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex index d1a58d5e1..3be805fa2 100644 --- a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex @@ -312,7 +312,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do with %Activity{} = activity <- Activity.get_by_id(status_id), true <- Visibility.visible_for_user?(activity, user) do data = Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) - render(conn, "card.json", data) + render(conn, "card.json", %{embed: data}) else _ -> render_error(conn, :not_found, "Record not found") end diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 427476695..9605c8329 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -271,7 +271,10 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do summary = object.data["summary"] || "" - card = render("card.json", Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)) + card = + render("card.json", %{ + embed: Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) + }) url = if user.local do @@ -369,7 +372,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do nil end - def render("card.json", %Embed{url: _, meta: _} = embed) do + def render("card.json", %{embed: %Embed{} = embed}) do with {:ok, %Card{} = card} <- Card.parse(embed) do Card.to_map(card) else @@ -377,7 +380,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do end end - def render("card.json", %Card{} = card), do: Card.to_map(card) + def render("card.json", %{embed: %Card{} = card}), do: Card.to_map(card) def render("card.json", _), do: nil def render("attachment.json", %{attachment: attachment}) do diff --git a/lib/pleroma/web/pleroma_api/views/chat/message_reference_view.ex b/lib/pleroma/web/pleroma_api/views/chat/message_reference_view.ex index 2e4355992..32fe0b229 100644 --- a/lib/pleroma/web/pleroma_api/views/chat/message_reference_view.ex +++ b/lib/pleroma/web/pleroma_api/views/chat/message_reference_view.ex @@ -37,7 +37,7 @@ defmodule Pleroma.Web.PleromaAPI.Chat.MessageReferenceView do card: StatusView.render( "card.json", - Pleroma.Web.RichMedia.Helpers.fetch_data_for_object(object) + %{embed: Pleroma.Web.RichMedia.Helpers.fetch_data_for_object(object)} ) } |> put_idempotency_key() diff --git a/lib/pleroma/web/rich_media/parser/card.ex b/lib/pleroma/web/rich_media/parser/card.ex index 1eb3ddbdd..f6193728a 100644 --- a/lib/pleroma/web/rich_media/parser/card.ex +++ b/lib/pleroma/web/rich_media/parser/card.ex @@ -33,7 +33,7 @@ defmodule Pleroma.Web.RichMedia.Parser.Card do type: oembed["type"], author_name: oembed["author_name"], author_url: oembed["author_url"], - provider_name: oembed["provider_name"], + provider_name: oembed["provider_name"] || URI.parse(url).host, provider_url: oembed["provider_url"], html: oembed["html"], width: oembed["width"], @@ -50,6 +50,7 @@ defmodule Pleroma.Web.RichMedia.Parser.Card do title: get_title(embed), description: get_description(embed), type: "link", + provider_name: URI.parse(url).host, image: get_image(embed) |> proxy() } |> validate() |