diff options
author | lain <lain@soykaf.club> | 2023-12-13 06:23:16 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2023-12-13 06:23:16 +0000 |
commit | 29d202e1df0cfbe110059815ca654ed1d3d93e41 (patch) | |
tree | ec338f37df0f9f5a132a1f723faa328fcbe808af /lib | |
parent | 2c560266e948f44a7dffa44747a75c6d5eb7495a (diff) | |
parent | e7af2addd85c66edc62262e5e799649fef6a9911 (diff) | |
download | pleroma-29d202e1df0cfbe110059815ca654ed1d3d93e41.tar.gz pleroma-29d202e1df0cfbe110059815ca654ed1d3d93e41.zip |
Merge branch 'add-opengraph-rich-media-proxy' into 'develop'
Add media proxy to opengraph rich media cards
See merge request pleroma/pleroma!3997
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 e3b5760fa..0e2e604f5 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -563,25 +563,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 @@ -818,4 +817,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 |