aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2018-06-13 06:37:02 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2018-06-13 06:42:27 +0000
commit59f95a7095f7f066f4f787f8fa1d04ceca4a3148 (patch)
tree41bbcab9c306a7651fd0579a79ea19ee4a947cab /lib
parentddc654d587eb74922f4c097088872edd9f337aa0 (diff)
downloadpleroma-59f95a7095f7f066f4f787f8fa1d04ceca4a3148.tar.gz
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
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/web_finger/web_finger.ex30
1 files changed, 6 insertions, 24 deletions
diff --git a/lib/pleroma/web/web_finger/web_finger.ex b/lib/pleroma/web/web_finger/web_finger.ex
index e7ee810f9..9f554d286 100644
--- a/lib/pleroma/web/web_finger/web_finger.ex
+++ b/lib/pleroma/web/web_finger/web_finger.ex
@@ -25,35 +25,17 @@ defmodule Pleroma.Web.WebFinger do
|> XmlBuilder.to_doc()
end
- def webfinger(resource, "JSON") do
+ def webfinger(resource, fmt) when fmt in ["XML", "JSON"] 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, "JSON")}
+ with %{"username" => username} <- Regex.named_captures(regex, resource),
+ %User{} = user <- User.get_by_nickname(username) do
+ {:ok, represent_user(user, fmt)}
else
_e ->
- with user when not is_nil(user) <- User.get_cached_by_ap_id(resource) do
- {:ok, represent_user(user, "JSON")}
- 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")}
+ with %User{} = user <- User.get_cached_by_ap_id(resource) do
+ {:ok, represent_user(user, fmt)}
else
_e ->
{:error, "Couldn't find user"}