Commit 39ccfdc0 authored by eal's avatar eal
Browse files

Add follow import.

parent d5a13c10
Pipeline #436 failed with stage
in 2 minutes and 34 seconds
......@@ -51,6 +51,11 @@ def user_fetcher(username) 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
......
......@@ -2,7 +2,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
use Pleroma.Web, :controller
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 +73,22 @@ def version(conn, _params) do
def emoji(conn, _params) do
json conn, Enum.into(Formatter.get_custom_emoji(), %{})
end
def follow_import(%{assigns: %{user: user}} = conn, %{"list" => list}) do
errors = list
|> String.split()
|> 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),
{:ok, _activity} <- ActivityPub.follow(follower, followed) do
:ok
else
_e -> nick
end
end)
|> Enum.reject(fn x -> x == :ok end)
json conn, %{"failed follows" => errors}
end
end
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment