Add follow import.
authoreal <eal@waifu.club>
Tue, 12 Dec 2017 16:35:23 +0000 (18:35 +0200)
committereal <eal@waifu.club>
Tue, 12 Dec 2017 16:35:23 +0000 (18:35 +0200)
lib/pleroma/web/router.ex
lib/pleroma/web/twitter_api/controllers/util_controller.ex

index 6806e8a75431a4ee9532772e46d1b014867f9e55..6ec5e3097c898d9ce440da1faee527a4389acc65 100644 (file)
@@ -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
index de2abd4d12650592112f76cde7ea9d03671afe18..c76486392d2b55e892ca1d369c2225176362dcf9 100644 (file)
@@ -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 @@ defmodule Pleroma.Web.TwitterAPI.UtilController 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