Add more information about failed verifications

This commit is contained in:
FloatingGhost 2023-03-10 03:51:24 +00:00
parent 8a4437d2be
commit b2112302ce
3 changed files with 19 additions and 13 deletions

View file

@ -2077,10 +2077,14 @@ defmodule Pleroma.User do
# TODO: get profile URLs other than user.ap_id
profile_urls = [user.ap_id]
bio
|> CommonUtils.format_input("text/plain",
CommonUtils.format_input(bio, "text/plain",
mentions_format: :full,
rel: &RelMe.maybe_put_rel_me(&1, profile_urls)
rel: fn link ->
case RelMe.maybe_put_rel_me(link, profile_urls) do
"me" -> "me"
_ -> nil
end
end
)
|> elem(0)
end

View file

@ -37,15 +37,18 @@ defmodule Pleroma.Web.RelMe do
end
def maybe_put_rel_me("http" <> _ = target_page, profile_urls) when is_list(profile_urls) do
{:ok, rel_me_hrefs} = parse(target_page)
true = Enum.any?(rel_me_hrefs, fn x -> x in profile_urls end)
"me"
with {:parse, {:ok, rel_me_hrefs}} <- {:parse, parse(target_page)},
{:link_match, true} <-
{:link_match, Enum.any?(rel_me_hrefs, fn x -> x in profile_urls end)} do
"me"
else
e -> {:error, {:could_not_verify, target_page, e}}
end
rescue
_ -> nil
e -> {:error, {:could_not_fetch, target_page, e}}
end
def maybe_put_rel_me(_, _) do
nil
{:error, :invalid_url}
end
end

View file

@ -26,13 +26,12 @@ defmodule Pleroma.Web.RelMeTest do
test "maybe_put_rel_me/2" do
profile_urls = ["https://social.example.org/users/lain"]
attr = "me"
fallback = nil
assert Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/null", profile_urls) ==
fallback
{:error, {:could_not_verify, "http://example.com/rel_me/null", {:link_match, false}}}
assert Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/error", profile_urls) ==
fallback
assert {:error, {:could_not_fetch, "http://example.com/rel_me/error", _}} =
Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/error", profile_urls)
assert Pleroma.Web.RelMe.maybe_put_rel_me("http://example.com/rel_me/anchor", profile_urls) ==
attr