aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNormandy <archaeme@biribiri.dev>2019-04-16 18:35:38 +0000
committerkaniini <nenolod@gmail.com>2019-04-16 18:35:38 +0000
commitd4a749cfb2f644dab9b0f414e8f0e41ed4ffd08f (patch)
treed436653ea2b43c8def7ee02409495a023a005961
parent0d4afdc6e620b3e8fa01ea90b359cf58a736465d (diff)
downloadpleroma-d4a749cfb2f644dab9b0f414e8f0e41ed4ffd08f.tar.gz
Handle new-style mastodon follow lists
Fixes https://git.pleroma.social/pleroma/pleroma/issues/814
-rw-r--r--lib/pleroma/web/twitter_api/controllers/util_controller.ex7
-rw-r--r--test/web/twitter_api/util_controller_test.exs15
2 files changed, 21 insertions, 1 deletions
diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex
index d066d35f5..ed45ca735 100644
--- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex
+++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex
@@ -304,7 +304,12 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
end
def follow_import(%{assigns: %{user: follower}} = conn, %{"list" => list}) do
- with followed_identifiers <- String.split(list),
+ with lines <- String.split(list, "\n"),
+ followed_identifiers <-
+ Enum.map(lines, fn line ->
+ String.split(line, ",") |> List.first()
+ end)
+ |> List.delete("Account address"),
{:ok, _} = Task.start(fn -> User.follow_import(follower, followed_identifiers) end) do
json(conn, "job started")
end
diff --git a/test/web/twitter_api/util_controller_test.exs b/test/web/twitter_api/util_controller_test.exs
index a4b3d651a..c58b49ea4 100644
--- a/test/web/twitter_api/util_controller_test.exs
+++ b/test/web/twitter_api/util_controller_test.exs
@@ -26,6 +26,21 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do
assert response == "job started"
end
+ test "it imports new-style mastodon follow lists", %{conn: conn} do
+ user1 = insert(:user)
+ user2 = insert(:user)
+
+ response =
+ conn
+ |> assign(:user, user1)
+ |> post("/api/pleroma/follow_import", %{
+ "list" => "Account address,Show boosts\n#{user2.ap_id},true"
+ })
+ |> json_response(:ok)
+
+ assert response == "job started"
+ end
+
test "requires 'follow' permission", %{conn: conn} do
token1 = insert(:oauth_token, scopes: ["read", "write"])
token2 = insert(:oauth_token, scopes: ["follow"])