aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/media_proxy/media_proxy.ex
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-01-30 19:16:15 +0100
committerlain <lain@soykaf.club>2020-01-30 19:16:15 +0100
commit57b8258ca921a3f37d1b3849a5c5f7a64812d125 (patch)
tree3ba8eaf1d4fb868da5037fec921fc07b2b2911fe /lib/pleroma/web/media_proxy/media_proxy.ex
parenta0d9d42eaab397a1913038fea5c2d3630b812849 (diff)
downloadpleroma-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.ex32
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