forked from AkkomaGang/akkoma
mrf/steal_emoji: fix size limit check
Headers are strings, but this expected to already get an int
thus always failing the comparison if the header was set.
Fixes mistake in d6d838cbe8
This commit is contained in:
parent
68fe0a9633
commit
be5440c5e8
2 changed files with 12 additions and 3 deletions
|
@ -101,10 +101,19 @@ defp get_extension_if_safe(response) do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp get_int_header(headers, header_name, default \\ nil) do
|
||||||
|
with rawval when rawval != :undefined <- :proplists.get_value(header_name, headers),
|
||||||
|
{int, ""} <- Integer.parse(rawval) do
|
||||||
|
int
|
||||||
|
else
|
||||||
|
_ -> default
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
defp is_remote_size_within_limit?(url) do
|
defp is_remote_size_within_limit?(url) do
|
||||||
with {:ok, %{status: status, headers: headers} = _response} when status in 200..299 <-
|
with {:ok, %{status: status, headers: headers} = _response} when status in 200..299 <-
|
||||||
Pleroma.HTTP.request(:head, url, nil, [], []) do
|
Pleroma.HTTP.request(:head, url, nil, [], []) do
|
||||||
content_length = :proplists.get_value("content-length", headers, nil)
|
content_length = get_int_header(headers, "content-length")
|
||||||
size_limit = Config.get([:mrf_steal_emoji, :size_limit], @size_limit)
|
size_limit = Config.get([:mrf_steal_emoji, :size_limit], @size_limit)
|
||||||
|
|
||||||
accept_unknown =
|
accept_unknown =
|
||||||
|
|
|
@ -202,7 +202,7 @@ test "reject unknown size", %{message: message} do
|
||||||
|
|
||||||
test "reject too large content-size before download", %{message: message} do
|
test "reject too large content-size before download", %{message: message} do
|
||||||
clear_config([:mrf_steal_emoji, :download_unknown_size], false)
|
clear_config([:mrf_steal_emoji, :download_unknown_size], false)
|
||||||
mock_tesla("https://example.org/emoji/firedfox.png", 200, [{"content-length", 2 ** 30}])
|
mock_tesla("https://example.org/emoji/firedfox.png", 200, [{"content-length", "#{2 ** 30}"}])
|
||||||
|
|
||||||
refute "firedfox" in installed()
|
refute "firedfox" in installed()
|
||||||
|
|
||||||
|
@ -216,7 +216,7 @@ test "reject too large content-size before download", %{message: message} do
|
||||||
|
|
||||||
test "accepts content-size below limit", %{message: message} do
|
test "accepts content-size below limit", %{message: message} do
|
||||||
clear_config([:mrf_steal_emoji, :download_unknown_size], false)
|
clear_config([:mrf_steal_emoji, :download_unknown_size], false)
|
||||||
mock_tesla("https://example.org/emoji/firedfox.png", 200, [{"content-length", 2}])
|
mock_tesla("https://example.org/emoji/firedfox.png", 200, [{"content-length", "2"}])
|
||||||
|
|
||||||
refute "firedfox" in installed()
|
refute "firedfox" in installed()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue