aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorIvan Tashkinov <ivantashkinov@gmail.com>2018-12-28 23:01:03 +0300
committerIvan Tashkinov <ivantashkinov@gmail.com>2018-12-28 23:01:03 +0300
commit700661b761117e6673ad254877ebba902b9d751b (patch)
treeba8e18d5d63601677b931f9350725a7313a9931c /lib
parent6e9a15b181fcca9e7485a61b1cce2e4ec6d46b78 (diff)
downloadpleroma-700661b761117e6673ad254877ebba902b9d751b.tar.gz
[#483] Blocked users list import (TwitterAPI).
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/router.ex1
-rw-r--r--lib/pleroma/web/twitter_api/controllers/util_controller.ex31
2 files changed, 30 insertions, 2 deletions
diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex
index a7f78ba81..43b04e508 100644
--- a/lib/pleroma/web/router.ex
+++ b/lib/pleroma/web/router.ex
@@ -137,6 +137,7 @@ defmodule Pleroma.Web.Router do
scope "/api/pleroma", Pleroma.Web.TwitterAPI do
pipe_through(:authenticated_api)
+ post("/blocks_import", UtilController, :blocks_import)
post("/follow_import", UtilController, :follow_import)
post("/change_password", UtilController, :change_password)
post("/delete_account", UtilController, :delete_account)
diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex
index c872aec2b..6a9325afe 100644
--- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex
+++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex
@@ -242,9 +242,12 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
def follow_import(%{assigns: %{user: user}} = conn, %{"list" => list}) do
Task.start(fn ->
- String.split(list)
+ follower = User.get_cached_by_ap_id(user.ap_id)
+
+ list
+ |> String.split()
|> Enum.map(fn account ->
- with %User{} = follower <- User.get_cached_by_ap_id(user.ap_id),
+ with %User{} <- follower,
%User{} = followed <- User.get_or_fetch(account),
{:ok, follower} <- User.maybe_direct_follow(follower, followed) do
ActivityPub.follow(follower, followed)
@@ -257,6 +260,30 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
json(conn, "job started")
end
+ def blocks_import(conn, %{"list" => %Plug.Upload{} = listfile}) do
+ blocks_import(conn, %{"list" => File.read!(listfile.path)})
+ end
+
+ def blocks_import(%{assigns: %{user: user}} = conn, %{"list" => list}) do
+ Task.start(fn ->
+ blocker = User.get_cached_by_ap_id(user.ap_id)
+
+ list
+ |> String.split()
+ |> Enum.map(fn account ->
+ with %User{} <- blocker,
+ %User{} = blocked <- User.get_or_fetch(account),
+ {:ok, blocker} <- User.block(blocker, blocked) do
+ ActivityPub.block(blocker, blocked)
+ else
+ err -> Logger.debug("blocks_import: blocking #{account} failed with #{inspect(err)}")
+ end
+ end)
+ end)
+
+ json(conn, "job started")
+ end
+
def change_password(%{assigns: %{user: user}} = conn, params) do
case CommonAPI.Utils.confirm_current_password(user, params["password"]) do
{:ok, user} ->