forked from AkkomaGang/akkoma
[#483] Blocked users list import (TwitterAPI).
This commit is contained in:
parent
6e9a15b181
commit
700661b761
2 changed files with 30 additions and 2 deletions
|
@ -137,6 +137,7 @@ defmodule Pleroma.Web.Router do
|
||||||
|
|
||||||
scope "/api/pleroma", Pleroma.Web.TwitterAPI do
|
scope "/api/pleroma", Pleroma.Web.TwitterAPI do
|
||||||
pipe_through(:authenticated_api)
|
pipe_through(:authenticated_api)
|
||||||
|
post("/blocks_import", UtilController, :blocks_import)
|
||||||
post("/follow_import", UtilController, :follow_import)
|
post("/follow_import", UtilController, :follow_import)
|
||||||
post("/change_password", UtilController, :change_password)
|
post("/change_password", UtilController, :change_password)
|
||||||
post("/delete_account", UtilController, :delete_account)
|
post("/delete_account", UtilController, :delete_account)
|
||||||
|
|
|
@ -242,9 +242,12 @@ def follow_import(conn, %{"list" => %Plug.Upload{} = listfile}) do
|
||||||
|
|
||||||
def follow_import(%{assigns: %{user: user}} = conn, %{"list" => list}) do
|
def follow_import(%{assigns: %{user: user}} = conn, %{"list" => list}) do
|
||||||
Task.start(fn ->
|
Task.start(fn ->
|
||||||
String.split(list)
|
follower = User.get_cached_by_ap_id(user.ap_id)
|
||||||
|
|
||||||
|
list
|
||||||
|
|> String.split()
|
||||||
|> Enum.map(fn account ->
|
|> 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),
|
%User{} = followed <- User.get_or_fetch(account),
|
||||||
{:ok, follower} <- User.maybe_direct_follow(follower, followed) do
|
{:ok, follower} <- User.maybe_direct_follow(follower, followed) do
|
||||||
ActivityPub.follow(follower, followed)
|
ActivityPub.follow(follower, followed)
|
||||||
|
@ -257,6 +260,30 @@ def follow_import(%{assigns: %{user: user}} = conn, %{"list" => list}) do
|
||||||
json(conn, "job started")
|
json(conn, "job started")
|
||||||
end
|
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
|
def change_password(%{assigns: %{user: user}} = conn, params) do
|
||||||
case CommonAPI.Utils.confirm_current_password(user, params["password"]) do
|
case CommonAPI.Utils.confirm_current_password(user, params["password"]) do
|
||||||
{:ok, user} ->
|
{:ok, user} ->
|
||||||
|
|
Loading…
Reference in a new issue