logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 6b48489237f85ec8b6a9a98c539e0aad68d3a601
parent: 9223038319f0281f104fb9bb85c0cb8f6e52984a
Author: lambda <pleromagit@rogerbraun.net>
Date:   Mon, 18 Dec 2017 10:59:57 +0000

Merge branch 'feature/follow-import' into 'develop'

Add follow import.

See merge request pleroma/pleroma!40

Diffstat:

Mlib/pleroma/web/router.ex5+++++
Mlib/pleroma/web/twitter_api/controllers/util_controller.ex23++++++++++++++++++++++-
2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex @@ -51,6 +51,11 @@ defmodule Pleroma.Web.Router do get "/emoji", UtilController, :emoji end + scope "/api/pleroma", Pleroma.Web.TwitterAPI do + pipe_through :authenticated_api + post "/follow_import", UtilController, :follow_import + end + scope "/oauth", Pleroma.Web.OAuth do get "/authorize", OAuthController, :authorize post "/authorize", OAuthController, :create_authorization diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -1,8 +1,9 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do use Pleroma.Web, :controller + require Logger alias Pleroma.Web alias Pleroma.Formatter - + alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.{Repo, PasswordResetToken, User} def show_password_reset(conn, %{"token" => token}) do @@ -73,4 +74,24 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do def emoji(conn, _params) do json conn, Enum.into(Formatter.get_custom_emoji(), %{}) end + + def follow_import(conn, %{"list" => %Plug.Upload{} = listfile}) do + follow_import(conn, %{"list" => File.read!(listfile.path)}) + end + def follow_import(%{assigns: %{user: user}} = conn, %{"list" => list}) do + Task.start_link(fn -> + String.split(list) + |> Enum.map(fn nick -> + with %User{} = follower <- User.get_cached_by_ap_id(user.ap_id), + %User{} = followed <- User.get_or_fetch_by_nickname(nick), + {:ok, follower} <- User.follow(follower, followed) do + ActivityPub.follow(follower, followed) + else + _e -> Logger.debug "follow_import: following #{nick} failed" + end + end) + end) + + json conn, "job started" + end end