Browse Source

[#483] Blocked users export for TwitterAPI.

tags/v0.9.9
Ivan Tashkinov 5 years ago
parent
commit
6e9a15b181
5 changed files with 32 additions and 4 deletions
  1. +3
    -0
      lib/pleroma/user.ex
  2. +2
    -4
      lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
  3. +1
    -0
      lib/pleroma/web/router.ex
  4. +8
    -0
      lib/pleroma/web/twitter_api/twitter_api_controller.ex
  5. +18
    -0
      test/web/twitter_api/twitter_api_controller_test.exs

+ 3
- 0
lib/pleroma/user.ex View File

@@ -649,6 +649,9 @@ defmodule Pleroma.User do
end)
end

def blocked_users(user),
do: Repo.all(from(u in User, where: u.ap_id in ^user.info.blocks))

def block_domain(user, domain) do
info_cng =
user.info


+ 2
- 4
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex View File

@@ -704,11 +704,9 @@ 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)
with blocked_accounts <- User.blocked_users(user) do
res = AccountView.render("accounts.json", users: blocked_accounts, for: user, as: :user)
json(conn, res)
end
end


+ 1
- 0
lib/pleroma/web/router.ex View File

@@ -281,6 +281,7 @@ defmodule Pleroma.Web.Router do

get("/statuses/followers", TwitterAPI.Controller, :followers)
get("/statuses/friends", TwitterAPI.Controller, :friends)
get("/statuses/blocks", TwitterAPI.Controller, :blocks)
get("/statuses/show/:id", TwitterAPI.Controller, :fetch_status)
get("/statusnet/conversation/:id", TwitterAPI.Controller, :fetch_conversation)



+ 8
- 0
lib/pleroma/web/twitter_api/twitter_api_controller.ex View File

@@ -507,6 +507,14 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
end
end

def blocks(%{assigns: %{user: user}} = conn, _params) do
with blocked_users <- User.blocked_users(user) do
conn
|> put_view(UserView)
|> render("index.json", %{users: blocked_users, for: user})
end
end

def friend_requests(conn, params) do
with {:ok, user} <- TwitterAPI.get_user(conn.assigns[:user], params),
{:ok, friend_requests} <- User.get_follow_requests(user) do


+ 18
- 0
test/web/twitter_api/twitter_api_controller_test.exs View File

@@ -1085,6 +1085,24 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
end
end

describe "GET /api/statuses/blocks" do
test "it returns the list of users blocked by requester", %{conn: conn} do
user = insert(:user)
other_user = insert(:user)

{:ok, user} = User.block(user, other_user)

conn =
conn
|> assign(:user, user)
|> get("/api/statuses/blocks")

expected = UserView.render("index.json", %{users: [other_user], for: user})
result = json_response(conn, 200)
assert Enum.sort(expected) == Enum.sort(result)
end
end

describe "GET /api/statuses/friends" do
test "it returns the logged in user's friends", %{conn: conn} do
user = insert(:user)


Loading…
Cancel
Save