Upload: bring back base_url
This commit is contained in:
parent
5d92431350
commit
65e7307d68
@ -5,6 +5,7 @@ defmodule Pleroma.Upload do
|
|||||||
Options:
|
Options:
|
||||||
* `:type`: presets for activity type (defaults to Document) and size limits from app configuration
|
* `:type`: presets for activity type (defaults to Document) and size limits from app configuration
|
||||||
* `:description`: upload alternative text
|
* `:description`: upload alternative text
|
||||||
|
* `:base_url`: override base url
|
||||||
* `:uploader`: override uploader
|
* `:uploader`: override uploader
|
||||||
* `:filters`: override filters
|
* `:filters`: override filters
|
||||||
* `:size_limit`: override size limit
|
* `:size_limit`: override size limit
|
||||||
@ -64,7 +65,7 @@ def store(upload, opts \\ []) do
|
|||||||
%{
|
%{
|
||||||
"type" => "Link",
|
"type" => "Link",
|
||||||
"mediaType" => upload.content_type,
|
"mediaType" => upload.content_type,
|
||||||
"href" => url_from_spec(url_spec)
|
"href" => url_from_spec(opts.base_url, url_spec)
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"name" => Map.get(opts, :description) || upload.name
|
"name" => Map.get(opts, :description) || upload.name
|
||||||
@ -100,7 +101,13 @@ defp get_opts(opts) do
|
|||||||
size_limit: Keyword.get(opts, :size_limit, size_limit),
|
size_limit: Keyword.get(opts, :size_limit, size_limit),
|
||||||
uploader: Keyword.get(opts, :uploader, Pleroma.Config.get([__MODULE__, :uploader])),
|
uploader: Keyword.get(opts, :uploader, Pleroma.Config.get([__MODULE__, :uploader])),
|
||||||
filters: Keyword.get(opts, :filters, Pleroma.Config.get([__MODULE__, :filters])),
|
filters: Keyword.get(opts, :filters, Pleroma.Config.get([__MODULE__, :filters])),
|
||||||
description: Keyword.get(opts, :description)
|
description: Keyword.get(opts, :description),
|
||||||
|
base_url:
|
||||||
|
Keyword.get(
|
||||||
|
opts,
|
||||||
|
:base_url,
|
||||||
|
Pleroma.Config.get([__MODULE__, :base_url], Pleroma.Web.base_url())
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO: 1.0+ : remove old config compatibility
|
# TODO: 1.0+ : remove old config compatibility
|
||||||
@ -204,8 +211,8 @@ defp tempfile_for_image(data) do
|
|||||||
tmp_path
|
tmp_path
|
||||||
end
|
end
|
||||||
|
|
||||||
defp url_from_spec({:file, path}) do
|
defp url_from_spec(base_url, {:file, path}) do
|
||||||
[Pleroma.Web.base_url(), "media", path]
|
[base_url, "media", path]
|
||||||
|> Path.join()
|
|> Path.join()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -82,6 +82,23 @@ test "validates signature" do
|
|||||||
[_, "proxy", sig, base64 | _] = URI.parse(encoded).path |> String.split("/")
|
[_, "proxy", sig, base64 | _] = URI.parse(encoded).path |> String.split("/")
|
||||||
assert decode_url(sig, base64) == {:error, :invalid_signature}
|
assert decode_url(sig, base64) == {:error, :invalid_signature}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "uses the configured base_url" do
|
||||||
|
base_url = Pleroma.Config.get([:media_proxy, :base_url])
|
||||||
|
|
||||||
|
if base_url do
|
||||||
|
on_exit(fn ->
|
||||||
|
Pleroma.Config.put([:media_proxy, :base_url], base_url)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
Pleroma.Config.put([:media_proxy, :base_url], "https://cache.pleroma.social")
|
||||||
|
|
||||||
|
url = "https://pleroma.soykaf.com/static/logo.png"
|
||||||
|
encoded = url(url)
|
||||||
|
|
||||||
|
assert String.starts_with?(encoded, Pleroma.Config.get([:media_proxy, :base_url]))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "when disabled" do
|
describe "when disabled" do
|
||||||
|
@ -36,6 +36,24 @@ test "returns a media url" do
|
|||||||
assert String.starts_with?(url, Pleroma.Web.base_url() <> "/media/")
|
assert String.starts_with?(url, Pleroma.Web.base_url() <> "/media/")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "returns a media url with configured base_url" do
|
||||||
|
base_url = "https://cache.pleroma.social"
|
||||||
|
|
||||||
|
File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
|
||||||
|
|
||||||
|
file = %Plug.Upload{
|
||||||
|
content_type: "image/jpg",
|
||||||
|
path: Path.absname("test/fixtures/image_tmp.jpg"),
|
||||||
|
filename: "image.jpg"
|
||||||
|
}
|
||||||
|
|
||||||
|
{:ok, data} = Upload.store(file, base_url: base_url)
|
||||||
|
|
||||||
|
assert %{"url" => [%{"href" => url}]} = data
|
||||||
|
|
||||||
|
assert String.starts_with?(url, base_url <> "/media/")
|
||||||
|
end
|
||||||
|
|
||||||
test "copies the file to the configured folder with deduping" do
|
test "copies the file to the configured folder with deduping" do
|
||||||
File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
|
File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user