MastoAPI: Add list of blocked users.
authorRoger Braun <roger@rogerbraun.net>
Fri, 3 Nov 2017 07:51:17 +0000 (08:51 +0100)
committerRoger Braun <roger@rogerbraun.net>
Fri, 3 Nov 2017 07:51:17 +0000 (08:51 +0100)
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
lib/pleroma/web/router.ex
test/web/mastodon_api/mastodon_api_controller_test.exs

index 5e299c976de5c61f2cdf75e98aa2fe36ea2cf839..9c88cc4e844674d611252c04c855f70403db1189 100644 (file)
@@ -335,6 +335,15 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
     end
   end
 
+  # TODO: Use proper query
+  def blocks(%{assigns: %{user: user}} = conn, _) do
+    with blocked_users <- user.info["blocks"] || [],
+         accounts <- Enum.map(blocked_users, fn (ap_id) -> User.get_cached_by_ap_id(ap_id) end) do
+      res = AccountView.render("accounts.json", users: accounts, for: user, as: :user)
+      json(conn, res)
+    end
+  end
+
   def search(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do
     accounts = User.search(query, params["resolve"] == "true")
 
index c4bbaa265fbdb1c0fdee62ee439606abd2456ebb..f96ec72138de2ef7effbd8354bc4b3d5eba3a679 100644 (file)
@@ -65,7 +65,8 @@ defmodule Pleroma.Web.Router do
 
     post "/follows", MastodonAPIController, :follow
 
-    get "/blocks", MastodonAPIController, :empty_array
+    get "/blocks", MastodonAPIController, :blocks
+
     get "/domain_blocks", MastodonAPIController, :empty_array
     get "/follow_requests", MastodonAPIController, :empty_array
     get "/mutes", MastodonAPIController, :empty_array
index c91f96f38305385610e5a0b3812c0f7ac8f4b909..d118026eb3b4d521c1d8bf59fd98e13912d1c6fc 100644 (file)
@@ -309,6 +309,20 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
     assert %{"id" => id, "blocking" => false} = json_response(conn, 200)
   end
 
+  test "getting a list of blocks", %{conn: conn} do
+    user = insert(:user)
+    other_user = insert(:user)
+
+    {:ok, user} = User.block(user, other_user)
+
+    conn = conn
+    |> assign(:user, user)
+    |> get("/api/v1/blocks")
+
+    other_user_id = other_user.id
+    assert [%{"id" => ^other_user_id}] = json_response(conn, 200)
+  end
+
   test "unimplemented mute endpoints" do
     user = insert(:user)
     other_user = insert(:user)