diff options
author | lain <lain@soykaf.club> | 2020-01-30 19:16:15 +0100 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-01-30 19:16:15 +0100 |
commit | 57b8258ca921a3f37d1b3849a5c5f7a64812d125 (patch) | |
tree | 3ba8eaf1d4fb868da5037fec921fc07b2b2911fe /lib/pleroma/web/media_proxy/media_proxy.ex | |
parent | a0d9d42eaab397a1913038fea5c2d3630b812849 (diff) | |
download | pleroma-thumbnail-proxy.tar.gz |
Previewing proxy proof of conceptthumbnail-proxy
Diffstat (limited to 'lib/pleroma/web/media_proxy/media_proxy.ex')
-rw-r--r-- | lib/pleroma/web/media_proxy/media_proxy.ex | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/pleroma/web/media_proxy/media_proxy.ex b/lib/pleroma/web/media_proxy/media_proxy.ex index 1725ab071..c99ec4128 100644 --- a/lib/pleroma/web/media_proxy/media_proxy.ex +++ b/lib/pleroma/web/media_proxy/media_proxy.ex @@ -20,6 +20,14 @@ defmodule Pleroma.Web.MediaProxy do end end + def preview_url(url) do + if disabled?() or whitelisted?(url) do + url + else + encode_preview_url(url) + end + end + defp disabled?, do: !Config.get([:media_proxy, :enabled], false) defp local?(url), do: String.starts_with?(url, Pleroma.Web.base_url()) @@ -54,6 +62,17 @@ defmodule Pleroma.Web.MediaProxy do build_url(sig64, base64, filename(url)) end + def encode_preview_url(url) do + base64 = Base.url_encode64(url, @base64_opts) + + sig64 = + base64 + |> signed_url + |> Base.url_encode64(@base64_opts) + + build_preview_url(sig64, base64, filename(url)) + end + def decode_url(sig, url) do with {:ok, sig} <- Base.url_decode64(sig, @base64_opts), signature when signature == sig <- signed_url(url) do @@ -82,4 +101,17 @@ defmodule Pleroma.Web.MediaProxy do |> Enum.filter(& &1) |> Path.join() end + + def build_preview_url(sig_base64, url_base64, filename \\ nil) do + [ + Pleroma.Config.get([:media_proxy, :base_url], Web.base_url()), + "proxy", + "preview", + sig_base64, + url_base64, + filename + ] + |> Enum.filter(& &1) + |> Path.join() + end end |