projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add tests for activity_pub/utils.ex
[akkoma]
/
lib
/
pleroma
/
web
/
web_finger
/
web_finger.ex
diff --git
a/lib/pleroma/web/web_finger/web_finger.ex
b/lib/pleroma/web/web_finger/web_finger.ex
index c5b7d4acb1a59fcb59a9e1edef95a7c91888a04e..ecb39ee503b7d73c576b83118995316b228e49f2 100644
(file)
--- a/
lib/pleroma/web/web_finger/web_finger.ex
+++ b/
lib/pleroma/web/web_finger/web_finger.ex
@@
-3,8
+3,7
@@
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.WebFinger do
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.WebFinger do
- @httpoison Application.get_env(:pleroma, :httpoison)
-
+ alias Pleroma.HTTP
alias Pleroma.User
alias Pleroma.Web
alias Pleroma.Web.Federator.Publisher
alias Pleroma.User
alias Pleroma.Web
alias Pleroma.Web.Federator.Publisher
@@
-33,7
+32,7
@@
defmodule Pleroma.Web.WebFinger do
def webfinger(resource, fmt) when fmt in ["XML", "JSON"] do
host = Pleroma.Web.Endpoint.host()
def webfinger(resource, fmt) when fmt in ["XML", "JSON"] do
host = Pleroma.Web.Endpoint.host()
- regex = ~r/(acct:)?(?<username>
\w
+)@#{host}/
+ regex = ~r/(acct:)?(?<username>
[a-z0-9A-Z_\.-]
+)@#{host}/
with %{"username" => username} <- Regex.named_captures(regex, resource),
%User{} = user <- User.get_cached_by_nickname(username) do
with %{"username" => username} <- Regex.named_captures(regex, resource),
%User{} = user <- User.get_cached_by_nickname(username) do
@@
-87,11
+86,17
@@
defmodule Pleroma.Web.WebFinger do
|> XmlBuilder.to_doc()
end
|> XmlBuilder.to_doc()
end
- defp get_magic_key(magic_key) do
- "data:application/magic-public-key," <> magic_key = magic_key
+ defp get_magic_key("data:application/magic-public-key," <> magic_key) do
{:ok, magic_key}
{:ok, magic_key}
- rescue
- MatchError -> {:error, "Missing magic key data."}
+ end
+
+ defp get_magic_key(nil) do
+ Logger.debug("Undefined magic key.")
+ {:ok, nil}
+ end
+
+ defp get_magic_key(_) do
+ {:error, "Missing magic key data."}
end
defp webfinger_from_xml(doc) do
end
defp webfinger_from_xml(doc) do
@@
-176,11
+181,11
@@
defmodule Pleroma.Web.WebFinger do
def find_lrdd_template(domain) do
with {:ok, %{status: status, body: body}} when status in 200..299 <-
def find_lrdd_template(domain) do
with {:ok, %{status: status, body: body}} when status in 200..299 <-
-
@httpoison
.get("http://#{domain}/.well-known/host-meta", []) do
+
HTTP
.get("http://#{domain}/.well-known/host-meta", []) do
get_template_from_xml(body)
else
_ ->
get_template_from_xml(body)
else
_ ->
- with {:ok, %{body: body}} <-
@httpoison
.get("https://#{domain}/.well-known/host-meta", []) do
+ with {:ok, %{body: body}} <-
HTTP
.get("https://#{domain}/.well-known/host-meta", []) do
get_template_from_xml(body)
else
e -> {:error, "Can't find LRDD template: #{inspect(e)}"}
get_template_from_xml(body)
else
e -> {:error, "Can't find LRDD template: #{inspect(e)}"}
@@
-188,6
+193,7
@@
defmodule Pleroma.Web.WebFinger do
end
end
end
end
+ @spec finger(String.t()) :: {:ok, map()} | {:error, any()}
def finger(account) do
account = String.trim_leading(account, "@")
def finger(account) do
account = String.trim_leading(account, "@")
@@
-209,7
+215,7
@@
defmodule Pleroma.Web.WebFinger do
end
with response <-
end
with response <-
-
@httpoison
.get(
+
HTTP
.get(
address,
Accept: "application/xrd+xml,application/jrd+json"
),
address,
Accept: "application/xrd+xml,application/jrd+json"
),
@@
-221,8
+227,6
@@
defmodule Pleroma.Web.WebFinger do
else
with {:ok, doc} <- Jason.decode(body) do
webfinger_from_json(doc)
else
with {:ok, doc} <- Jason.decode(body) do
webfinger_from_json(doc)
- else
- {:error, e} -> e
end
end
else
end
end
else