Browse Source

Fix follow errors

tags/v0.9.9
Rachel H 6 years ago
parent
commit
1525a0404b
3 changed files with 51 additions and 36 deletions
  1. +4
    -1
      .gitignore
  2. +1
    -1
      lib/pleroma/web/twitter_api/controllers/util_controller.ex
  3. +46
    -34
      lib/pleroma/web/web_finger/web_finger.ex

+ 4
- 1
.gitignore View File

@@ -25,4 +25,7 @@ erl_crash.dump
/config/setup_db.psql

.DS_Store
.env
.env

# Editor config
/.vscode

+ 1
- 1
lib/pleroma/web/twitter_api/controllers/util_controller.ex View File

@@ -189,7 +189,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
{:ok, follower} <- User.follow(follower, followed) do
ActivityPub.follow(follower, followed)
else
_e -> Logger.debug("follow_import: following #{account} failed")
err -> Logger.debug("follow_import: following #{account} failed with #{inspect(err)}")
end
end)
end)


+ 46
- 34
lib/pleroma/web/web_finger/web_finger.ex View File

@@ -144,41 +144,50 @@ defmodule Pleroma.Web.WebFinger do
end
end

defp webfinger_from_xml(doc) do
magic_key = XML.string_from_xpath(~s{//Link[@rel="magic-public-key"]/@href}, doc)
defp get_magic_key(magic_key) do
"data:application/magic-public-key," <> magic_key = magic_key
{:ok, magic_key}
rescue
MatchError -> {:error, "Missing magic key data."}
end

topic =
XML.string_from_xpath(
~s{//Link[@rel="http://schemas.google.com/g/2010#updates-from"]/@href},
doc
)

subject = XML.string_from_xpath("//Subject", doc)
salmon = XML.string_from_xpath(~s{//Link[@rel="salmon"]/@href}, doc)

subscribe_address =
XML.string_from_xpath(
~s{//Link[@rel="http://ostatus.org/schema/1.0/subscribe"]/@template},
doc
)

ap_id =
XML.string_from_xpath(
~s{//Link[@rel="self" and @type="application/activity+json"]/@href},
doc
)

data = %{
"magic_key" => magic_key,
"topic" => topic,
"subject" => subject,
"salmon" => salmon,
"subscribe_address" => subscribe_address,
"ap_id" => ap_id
}
defp webfinger_from_xml(doc) do
with magic_key <- XML.string_from_xpath(~s{//Link[@rel="magic-public-key"]/@href}, doc),
{:ok, magic_key} <- get_magic_key(magic_key),
topic <-
XML.string_from_xpath(
~s{//Link[@rel="http://schemas.google.com/g/2010#updates-from"]/@href},
doc
),
subject <- XML.string_from_xpath("//Subject", doc),
salmon <- XML.string_from_xpath(~s{//Link[@rel="salmon"]/@href}, doc),
subscribe_address <-
XML.string_from_xpath(
~s{//Link[@rel="http://ostatus.org/schema/1.0/subscribe"]/@template},
doc
),
ap_id <-
XML.string_from_xpath(
~s{//Link[@rel="self" and @type="application/activity+json"]/@href},
doc
) do
data = %{
"magic_key" => magic_key,
"topic" => topic,
"subject" => subject,
"salmon" => salmon,
"subscribe_address" => subscribe_address,
"ap_id" => ap_id
}

{:ok, data}
{:ok, data}
else
{:error, e} ->
{:error, e}

e ->
{:error, e}
end
end

defp webfinger_from_json(doc) do
@@ -268,8 +277,11 @@ defmodule Pleroma.Web.WebFinger do
if doc != :error do
webfinger_from_xml(doc)
else
{:ok, doc} = Jason.decode(body)
webfinger_from_json(doc)
with {:ok, doc} <- Jason.decode(body) do
webfinger_from_json(doc)
else
{:error, e} -> e
end
end
else
e ->


Loading…
Cancel
Save