webfinger: attempt to fall back if LRDD template cannot be found
[akkoma] / lib / pleroma / web / web_finger / web_finger.ex
index 378e544ba7feb387a3fe7d68c4bcffd376486a4b..de4165bb3b4b6545f60aa2773a3c7ff442337997 100644 (file)
@@ -146,9 +146,14 @@ defmodule Pleroma.Web.WebFinger do
                URI.parse(account).host
              end
 
-    with {:ok, template} <- find_lrdd_template(domain),
-         address <- String.replace(template, "{uri}", URI.encode(account)),
-         response <- @httpoison.get(address, ["Accept": "application/xrd+xml"]),
+    case find_lrdd_template(domain) do
+      {:ok, template} ->
+        address = String.replace(template, "{uri}", URI.encode(account))
+      _ ->
+        address = "http://#{domain}/.well-known/webfinger?resource=#{account}"
+    end
+
+    with response <- @httpoison.get(address, ["Accept": "application/xrd+xml"]),
          {:ok, %{status_code: status_code, body: body}} when status_code in 200..299 <- response,
          doc when doc != :error<- XML.parse_document(body),
          {:ok, data} <- webfinger_from_xml(doc) do