Merge branch 'improve-410-handling' into 'develop'

Handle HTTP 404 and 410 response

Closes #977

See merge request pleroma/pleroma!1278
This commit is contained in:
lain 2019-06-13 10:47:35 +00:00
commit a2318e9dd6
2 changed files with 32 additions and 5 deletions

View File

@ -85,6 +85,9 @@ def fetch_and_contain_remote_object_from_id(id) do
:ok <- Containment.contain_origin_from_id(id, data) do :ok <- Containment.contain_origin_from_id(id, data) do
{:ok, data} {:ok, data}
else else
{:ok, %{status: code}} when code in [404, 410] ->
{:error, "Object has been deleted"}
e -> e ->
{:error, e} {:error, e}
end end

View File

@ -7,7 +7,17 @@ defmodule Pleroma.Object.FetcherTest do
import Tesla.Mock import Tesla.Mock
setup do setup do
mock(fn env -> apply(HttpRequestMock, :request, [env]) end) mock(fn
%{method: :get, url: "https://mastodon.example.org/users/userisgone"} ->
%Tesla.Env{status: 410}
%{method: :get, url: "https://mastodon.example.org/users/userisgone404"} ->
%Tesla.Env{status: 404}
env ->
apply(HttpRequestMock, :request, [env])
end)
:ok :ok
end end
@ -81,11 +91,25 @@ test "it can fetch peertube videos" do
end end
test "all objects with fake directions are rejected by the object fetcher" do test "all objects with fake directions are rejected by the object fetcher" do
{:error, _} = assert {:error, _} =
Fetcher.fetch_and_contain_remote_object_from_id( Fetcher.fetch_and_contain_remote_object_from_id(
"https://info.pleroma.site/activity4.json" "https://info.pleroma.site/activity4.json"
) )
end end
test "handle HTTP 410 Gone response" do
assert {:error, "Object has been deleted"} ==
Fetcher.fetch_and_contain_remote_object_from_id(
"https://mastodon.example.org/users/userisgone"
)
end
test "handle HTTP 404 response" do
assert {:error, "Object has been deleted"} ==
Fetcher.fetch_and_contain_remote_object_from_id(
"https://mastodon.example.org/users/userisgone404"
)
end
end end
describe "pruning" do describe "pruning" do