From bf9d3d4abaecc4e842c38866f039ebd8f5f96948 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Tue, 3 Apr 2018 19:43:59 +0000 Subject: [PATCH 1/2] XML: use try/catch with XPath functions --- lib/pleroma/web/xml/xml.ex | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/xml/xml.ex b/lib/pleroma/web/xml/xml.ex index b85712d65..8b609f695 100644 --- a/lib/pleroma/web/xml/xml.ex +++ b/lib/pleroma/web/xml/xml.ex @@ -4,14 +4,20 @@ defmodule Pleroma.Web.XML do def string_from_xpath(_, :error), do: nil def string_from_xpath(xpath, doc) do - {:xmlObj, :string, res} = :xmerl_xpath.string('string(#{xpath})', doc) + try do + {:xmlObj, :string, res} = :xmerl_xpath.string('string(#{xpath})', doc) - res = - res - |> to_string - |> String.trim() + res = + res + |> to_string + |> String.trim() - if res == "", do: nil, else: res + if res == "", do: nil, else: res + catch + e -> + Logger.debug("Couldn't find xpath #{xpath} in XML doc") + nil + end end def parse_document(text) do From e7ddda44c043e7b6c38e31bafd2639699a3e1d1c Mon Sep 17 00:00:00 2001 From: eal Date: Sat, 7 Apr 2018 14:54:34 +0300 Subject: [PATCH 2/2] Follow import: allow URI in addition to screen_name. --- lib/pleroma/web/twitter_api/controllers/util_controller.ex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index 8f452c31c..c7b1a5b95 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -182,13 +182,13 @@ def follow_import(conn, %{"list" => %Plug.Upload{} = listfile}) do def follow_import(%{assigns: %{user: user}} = conn, %{"list" => list}) do Task.start(fn -> String.split(list) - |> Enum.map(fn nick -> + |> Enum.map(fn account -> with %User{} = follower <- User.get_cached_by_ap_id(user.ap_id), - %User{} = followed <- User.get_or_fetch_by_nickname(nick), + %User{} = followed <- User.get_or_fetch(account), {:ok, follower} <- User.follow(follower, followed) do ActivityPub.follow(follower, followed) else - _e -> Logger.debug("follow_import: following #{nick} failed") + _e -> Logger.debug("follow_import: following #{account} failed") end end) end)