webfinger: refactor webfinger() functions
- remove code duplication - move user lookup to parent with statement - tighten both user lookup by nickname and activitypub URI with a type constraint
This commit is contained in:
parent
ddc654d587
commit
59f95a7095
1 changed files with 6 additions and 24 deletions
|
@ -25,35 +25,17 @@ defmodule Pleroma.Web.WebFinger do
|
||||||
|> XmlBuilder.to_doc()
|
|> XmlBuilder.to_doc()
|
||||||
end
|
end
|
||||||
|
|
||||||
def webfinger(resource, "JSON") do
|
def webfinger(resource, fmt) when fmt in ["XML", "JSON"] do
|
||||||
host = Pleroma.Web.Endpoint.host()
|
host = Pleroma.Web.Endpoint.host()
|
||||||
regex = ~r/(acct:)?(?<username>\w+)@#{host}/
|
regex = ~r/(acct:)?(?<username>\w+)@#{host}/
|
||||||
|
|
||||||
with %{"username" => username} <- Regex.named_captures(regex, resource) do
|
with %{"username" => username} <- Regex.named_captures(regex, resource),
|
||||||
user = User.get_by_nickname(username)
|
%User{} = user <- User.get_by_nickname(username) do
|
||||||
{:ok, represent_user(user, "JSON")}
|
{:ok, represent_user(user, fmt)}
|
||||||
else
|
else
|
||||||
_e ->
|
_e ->
|
||||||
with user when not is_nil(user) <- User.get_cached_by_ap_id(resource) do
|
with %User{} = user <- User.get_cached_by_ap_id(resource) do
|
||||||
{:ok, represent_user(user, "JSON")}
|
{:ok, represent_user(user, fmt)}
|
||||||
else
|
|
||||||
_e ->
|
|
||||||
{:error, "Couldn't find user"}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def webfinger(resource, "XML") do
|
|
||||||
host = Pleroma.Web.Endpoint.host()
|
|
||||||
regex = ~r/(acct:)?(?<username>\w+)@#{host}/
|
|
||||||
|
|
||||||
with %{"username" => username} <- Regex.named_captures(regex, resource) do
|
|
||||||
user = User.get_by_nickname(username)
|
|
||||||
{:ok, represent_user(user, "XML")}
|
|
||||||
else
|
|
||||||
_e ->
|
|
||||||
with user when not is_nil(user) <- User.get_cached_by_ap_id(resource) do
|
|
||||||
{:ok, represent_user(user, "XML")}
|
|
||||||
else
|
else
|
||||||
_e ->
|
_e ->
|
||||||
{:error, "Couldn't find user"}
|
{:error, "Couldn't find user"}
|
||||||
|
|
Loading…
Reference in a new issue