diff options
author | Alexander Tumin <iamtakingiteasy@eientei.org> | 2023-12-12 15:08:20 +0300 |
---|---|---|
committer | Alexander Tumin <iamtakingiteasy@eientei.org> | 2023-12-12 18:32:02 +0300 |
commit | e7af2addd85c66edc62262e5e799649fef6a9911 (patch) | |
tree | 164d1cfa4a9ffa8cb3f1d12d74150ae2152db005 /lib | |
parent | 4c5b45ed73e93e6e8bcfeb527b9b398ec64c0caf (diff) | |
download | pleroma-e7af2addd85c66edc62262e5e799649fef6a9911.tar.gz pleroma-e7af2addd85c66edc62262e5e799649fef6a9911.zip |
Add media proxy to opengraph rich media cards
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/mastodon_api/views/status_view.ex | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index d070262cc..8825f3715 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -562,25 +562,24 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do page_url = page_url_data |> to_string - image_url_data = - if is_binary(rich_media["image"]) do - URI.parse(rich_media["image"]) - else - nil - end - - image_url = build_image_url(image_url_data, page_url_data) + image_url = proxied_url(rich_media["image"], page_url_data) + audio_url = proxied_url(rich_media["audio"], page_url_data) + video_url = proxied_url(rich_media["video"], page_url_data) %{ type: "link", provider_name: page_url_data.host, provider_url: page_url_data.scheme <> "://" <> page_url_data.host, url: page_url, - image: image_url |> MediaProxy.url(), + image: image_url, title: rich_media["title"] || "", description: rich_media["description"] || "", pleroma: %{ - opengraph: rich_media + opengraph: + rich_media + |> Maps.put_if_present("image", image_url) + |> Maps.put_if_present("audio", audio_url) + |> Maps.put_if_present("video", video_url) } } end @@ -817,4 +816,12 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do defp get_source_content_type(_source) do Utils.get_content_type(nil) end + + defp proxied_url(url, page_url_data) do + if is_binary(url) do + build_image_url(URI.parse(url), page_url_data) |> MediaProxy.url() + else + nil + end + end end |