mirror of
https://akkoma.dev/AkkomaGang/akkoma.git
synced 2024-11-14 05:04:49 +00:00
TwitterAPI: Add blocks.
This commit is contained in:
parent
be67db5547
commit
6c0758e041
5 changed files with 115 additions and 0 deletions
|
@ -164,6 +164,8 @@ defmodule Pleroma.Web.Router do
|
||||||
|
|
||||||
post "/friendships/create", TwitterAPI.Controller, :follow
|
post "/friendships/create", TwitterAPI.Controller, :follow
|
||||||
post "/friendships/destroy", TwitterAPI.Controller, :unfollow
|
post "/friendships/destroy", TwitterAPI.Controller, :unfollow
|
||||||
|
post "/blocks/create", TwitterAPI.Controller, :block
|
||||||
|
post "/blocks/destroy", TwitterAPI.Controller, :unblock
|
||||||
|
|
||||||
post "/statusnet/media/upload", TwitterAPI.Controller, :upload
|
post "/statusnet/media/upload", TwitterAPI.Controller, :upload
|
||||||
post "/media/upload", TwitterAPI.Controller, :upload_json
|
post "/media/upload", TwitterAPI.Controller, :upload_json
|
||||||
|
|
|
@ -86,6 +86,26 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def block(%User{} = blocker, params) do
|
||||||
|
with {:ok, %User{} = blocked} <- get_user(params),
|
||||||
|
{:ok, blocker} <- User.block(blocker, blocked)
|
||||||
|
do
|
||||||
|
{:ok, blocker, blocked}
|
||||||
|
else
|
||||||
|
err -> err
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def unblock(%User{} = blocker, params) do
|
||||||
|
with {:ok, %User{} = blocked} <- get_user(params),
|
||||||
|
{:ok, blocker} <- User.unblock(blocker, blocked)
|
||||||
|
do
|
||||||
|
{:ok, blocker, blocked}
|
||||||
|
else
|
||||||
|
err -> err
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def repeat(%User{} = user, ap_id_or_id) do
|
def repeat(%User{} = user, ap_id_or_id) do
|
||||||
with {:ok, _announce, %{data: %{"id" => id}}} = CommonAPI.repeat(ap_id_or_id, user),
|
with {:ok, _announce, %{data: %{"id" => id}}} = CommonAPI.repeat(ap_id_or_id, user),
|
||||||
%Activity{} = activity <- Activity.get_create_activity_by_object_ap_id(id),
|
%Activity{} = activity <- Activity.get_create_activity_by_object_ap_id(id),
|
||||||
|
|
|
@ -93,6 +93,22 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def block(%{assigns: %{user: user}} = conn, params) do
|
||||||
|
case TwitterAPI.block(user, params) do
|
||||||
|
{:ok, user, blocked} ->
|
||||||
|
render conn, UserView, "show.json", %{user: blocked, for: user}
|
||||||
|
{:error, msg} -> forbidden_json_reply(conn, msg)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def unblock(%{assigns: %{user: user}} = conn, params) do
|
||||||
|
case TwitterAPI.unblock(user, params) do
|
||||||
|
{:ok, user, blocked} ->
|
||||||
|
render conn, UserView, "show.json", %{user: blocked, for: user}
|
||||||
|
{:error, msg} -> forbidden_json_reply(conn, msg)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def delete_post(%{assigns: %{user: user}} = conn, %{"id" => id}) do
|
def delete_post(%{assigns: %{user: user}} = conn, %{"id" => id}) do
|
||||||
with {:ok, delete} <- CommonAPI.delete(id, user) do
|
with {:ok, delete} <- CommonAPI.delete(id, user) do
|
||||||
json = ActivityRepresenter.to_json(delete, %{user: user, for: user})
|
json = ActivityRepresenter.to_json(delete, %{user: user, for: user})
|
||||||
|
|
|
@ -277,6 +277,49 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "POST /blocks/create.json" do
|
||||||
|
setup [:valid_user]
|
||||||
|
test "without valid credentials", %{conn: conn} do
|
||||||
|
conn = post conn, "/api/blocks/create.json"
|
||||||
|
assert json_response(conn, 403) == %{"error" => "Invalid credentials."}
|
||||||
|
end
|
||||||
|
|
||||||
|
test "with credentials", %{conn: conn, user: current_user} do
|
||||||
|
blocked = insert(:user)
|
||||||
|
|
||||||
|
conn = conn
|
||||||
|
|> with_credentials(current_user.nickname, "test")
|
||||||
|
|> post("/api/blocks/create.json", %{user_id: blocked.id})
|
||||||
|
|
||||||
|
current_user = Repo.get(User, current_user.id)
|
||||||
|
assert User.blocks?(current_user, blocked)
|
||||||
|
assert json_response(conn, 200) == UserView.render("show.json", %{user: blocked, for: current_user})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "POST /blocks/destroy.json" do
|
||||||
|
setup [:valid_user]
|
||||||
|
test "without valid credentials", %{conn: conn} do
|
||||||
|
conn = post conn, "/api/blocks/destroy.json"
|
||||||
|
assert json_response(conn, 403) == %{"error" => "Invalid credentials."}
|
||||||
|
end
|
||||||
|
|
||||||
|
test "with credentials", %{conn: conn, user: current_user} do
|
||||||
|
blocked = insert(:user)
|
||||||
|
|
||||||
|
{:ok, current_user} = User.block(current_user, blocked)
|
||||||
|
assert User.blocks?(current_user, blocked)
|
||||||
|
|
||||||
|
conn = conn
|
||||||
|
|> with_credentials(current_user.nickname, "test")
|
||||||
|
|> post("/api/blocks/destroy.json", %{user_id: blocked.id})
|
||||||
|
|
||||||
|
current_user = Repo.get(User, current_user.id)
|
||||||
|
assert current_user.info["blocks"] == []
|
||||||
|
assert json_response(conn, 200) == UserView.render("show.json", %{user: blocked, for: current_user})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "GET /help/test.json" do
|
describe "GET /help/test.json" do
|
||||||
test "returns \"ok\"", %{conn: conn} do
|
test "returns \"ok\"", %{conn: conn} do
|
||||||
conn = get conn, "/api/help/test.json"
|
conn = get conn, "/api/help/test.json"
|
||||||
|
|
|
@ -224,6 +224,40 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
|
||||||
assert msg == "Not subscribed!"
|
assert msg == "Not subscribed!"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "Block another user using user_id" do
|
||||||
|
user = insert(:user)
|
||||||
|
blocked = insert(:user)
|
||||||
|
|
||||||
|
{:ok, user, blocked} = TwitterAPI.block(user, %{"user_id" => blocked.id})
|
||||||
|
assert User.blocks?(user, blocked)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "Block another user using screen_name" do
|
||||||
|
user = insert(:user)
|
||||||
|
blocked = insert(:user)
|
||||||
|
|
||||||
|
{:ok, user, blocked} = TwitterAPI.block(user, %{"screen_name" => blocked.nickname})
|
||||||
|
assert User.blocks?(user, blocked)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "Unblock another user using user_id" do
|
||||||
|
unblocked = insert(:user)
|
||||||
|
user = insert(:user)
|
||||||
|
User.block(user, unblocked)
|
||||||
|
|
||||||
|
{:ok, user, unblocked} = TwitterAPI.unblock(user, %{"user_id" => unblocked.id})
|
||||||
|
assert user.info["blocks"] == []
|
||||||
|
end
|
||||||
|
|
||||||
|
test "Unblock another user using screen_name" do
|
||||||
|
unblocked = insert(:user)
|
||||||
|
user = insert(:user)
|
||||||
|
User.block(user, unblocked)
|
||||||
|
|
||||||
|
{:ok, user, unblocked} = TwitterAPI.unblock(user, %{"screen_name" => unblocked.nickname})
|
||||||
|
assert user.info["blocks"] == []
|
||||||
|
end
|
||||||
|
|
||||||
test "fetch statuses in a context using the conversation id" do
|
test "fetch statuses in a context using the conversation id" do
|
||||||
{:ok, user} = UserBuilder.insert()
|
{:ok, user} = UserBuilder.insert()
|
||||||
{:ok, activity} = ActivityBuilder.insert(%{"type" => "Create", "context" => "2hu"})
|
{:ok, activity} = ActivityBuilder.insert(%{"type" => "Create", "context" => "2hu"})
|
||||||
|
|
Loading…
Reference in a new issue