forked from AkkomaGang/akkoma
MastoAPI: Add blocking.
This commit is contained in:
parent
33beb51da4
commit
5bf92e50be
3 changed files with 46 additions and 4 deletions
|
@ -311,6 +311,30 @@ def unfollow(%{assigns: %{user: follower}} = conn, %{"id" => id}) do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def block(%{assigns: %{user: blocker}} = conn, %{"id" => id}) do
|
||||||
|
with %User{} = blocked <- Repo.get(User, id),
|
||||||
|
{:ok, blocker} <- User.block(blocker, blocked) do
|
||||||
|
render conn, AccountView, "relationship.json", %{user: blocker, target: blocked}
|
||||||
|
else
|
||||||
|
{:error, message} = err ->
|
||||||
|
conn
|
||||||
|
|> put_resp_content_type("application/json")
|
||||||
|
|> send_resp(403, Poison.encode!(%{"error" => message}))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def unblock(%{assigns: %{user: blocker}} = conn, %{"id" => id}) do
|
||||||
|
with %User{} = blocked <- Repo.get(User, id),
|
||||||
|
{:ok, blocker} <- User.unblock(blocker, blocked) do
|
||||||
|
render conn, AccountView, "relationship.json", %{user: blocker, target: blocked}
|
||||||
|
else
|
||||||
|
{:error, message} = err ->
|
||||||
|
conn
|
||||||
|
|> put_resp_content_type("application/json")
|
||||||
|
|> send_resp(403, Poison.encode!(%{"error" => message}))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def search(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do
|
def search(%{assigns: %{user: user}} = conn, %{"q" => query} = params) do
|
||||||
accounts = User.search(query, params["resolve"] == "true")
|
accounts = User.search(query, params["resolve"] == "true")
|
||||||
|
|
||||||
|
|
|
@ -58,8 +58,8 @@ def user_fetcher(username) do
|
||||||
get "/accounts/search", MastodonAPIController, :account_search
|
get "/accounts/search", MastodonAPIController, :account_search
|
||||||
post "/accounts/:id/follow", MastodonAPIController, :follow
|
post "/accounts/:id/follow", MastodonAPIController, :follow
|
||||||
post "/accounts/:id/unfollow", MastodonAPIController, :unfollow
|
post "/accounts/:id/unfollow", MastodonAPIController, :unfollow
|
||||||
post "/accounts/:id/block", MastodonAPIController, :relationship_noop
|
post "/accounts/:id/block", MastodonAPIController, :block
|
||||||
post "/accounts/:id/unblock", MastodonAPIController, :relationship_noop
|
post "/accounts/:id/unblock", MastodonAPIController, :unblock
|
||||||
post "/accounts/:id/mute", MastodonAPIController, :relationship_noop
|
post "/accounts/:id/mute", MastodonAPIController, :relationship_noop
|
||||||
post "/accounts/:id/unmute", MastodonAPIController, :relationship_noop
|
post "/accounts/:id/unmute", MastodonAPIController, :relationship_noop
|
||||||
|
|
||||||
|
|
|
@ -291,11 +291,29 @@ test "following / unfollowing a user", %{conn: conn} do
|
||||||
assert id == other_user.id
|
assert id == other_user.id
|
||||||
end
|
end
|
||||||
|
|
||||||
test "unimplemented block/mute endpoints" do
|
test "blocking / unblocking a user", %{conn: conn} do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
other_user = insert(:user)
|
other_user = insert(:user)
|
||||||
|
|
||||||
["block", "unblock", "mute", "unmute"]
|
conn = conn
|
||||||
|
|> assign(:user, user)
|
||||||
|
|> post("/api/v1/accounts/#{other_user.id}/block")
|
||||||
|
|
||||||
|
assert %{"id" => id, "blocking" => true} = json_response(conn, 200)
|
||||||
|
|
||||||
|
user = Repo.get(User, user.id)
|
||||||
|
conn = build_conn()
|
||||||
|
|> assign(:user, user)
|
||||||
|
|> post("/api/v1/accounts/#{other_user.id}/unblock")
|
||||||
|
|
||||||
|
assert %{"id" => id, "blocking" => false} = json_response(conn, 200)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "unimplemented mute endpoints" do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user)
|
||||||
|
|
||||||
|
["mute", "unmute"]
|
||||||
|> Enum.each(fn(endpoint) ->
|
|> Enum.each(fn(endpoint) ->
|
||||||
conn = build_conn()
|
conn = build_conn()
|
||||||
|> assign(:user, user)
|
|> assign(:user, user)
|
||||||
|
|
Loading…
Reference in a new issue