Browse Source

Merge branch 'feature/1720-status-view' into 'develop'

Admin API fetch status by id

Closes #1720

See merge request pleroma/pleroma!2475
features/attachment_validator
lain 4 years ago
parent
commit
42a2acac46
5 changed files with 43 additions and 1 deletions
  1. +1
    -0
      CHANGELOG.md
  2. +11
    -0
      docs/API/admin_api.md
  3. +11
    -1
      lib/pleroma/web/admin_api/admin_api_controller.ex
  4. +1
    -0
      lib/pleroma/web/router.ex
  5. +19
    -0
      test/web/admin_api/admin_api_controller_test.exs

+ 1
- 0
CHANGELOG.md View File

@@ -30,6 +30,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Mastodon API: Added `/api/v1/notifications/:id/dismiss` endpoint.
- Mastodon API: Add support for filtering replies in public and home timelines
- Admin API: endpoints for create/update/delete OAuth Apps.
- Admin API: endpoint for status view.
</details>

### Fixed


+ 11
- 0
docs/API/admin_api.md View File

@@ -755,6 +755,17 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret
- 400 Bad Request `"Invalid parameters"` when `status` is missing
- On success: `204`, empty response

## `GET /api/pleroma/admin/statuses/:id`

### Show status by id

- Params:
- `id`: required, status id
- Response:
- On failure:
- 404 Not Found `"Not Found"`
- On success: JSON, Mastodon Status entity

## `PUT /api/pleroma/admin/statuses/:id`

### Change the scope of an individual reported status


+ 11
- 1
lib/pleroma/web/admin_api/admin_api_controller.ex View File

@@ -93,7 +93,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
plug(
OAuthScopesPlug,
%{scopes: ["read:statuses"], admin: true}
when action in [:list_statuses, :list_user_statuses, :list_instance_statuses]
when action in [:list_statuses, :list_user_statuses, :list_instance_statuses, :status_show]
)

plug(
@@ -837,6 +837,16 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
|> render("index.json", %{activities: activities, as: :activity, skip_relationships: false})
end

def status_show(conn, %{"id" => id}) do
with %Activity{} = activity <- Activity.get_by_id(id) do
conn
|> put_view(StatusView)
|> render("show.json", %{activity: activity})
else
_ -> errors(conn, {:error, :not_found})
end
end

def status_update(%{assigns: %{user: admin}} = conn, %{"id" => id} = params) do
with {:ok, activity} <- CommonAPI.update_activity_scope(id, params) do
{:ok, sensitive} = Ecto.Type.cast(:boolean, params["sensitive"])


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

@@ -188,6 +188,7 @@ defmodule Pleroma.Web.Router do
post("/reports/:id/notes", AdminAPIController, :report_notes_create)
delete("/reports/:report_id/notes/:id", AdminAPIController, :report_notes_delete)

get("/statuses/:id", AdminAPIController, :status_show)
put("/statuses/:id", AdminAPIController, :status_update)
delete("/statuses/:id", AdminAPIController, :status_delete)
get("/statuses", AdminAPIController, :list_statuses)


+ 19
- 0
test/web/admin_api/admin_api_controller_test.exs View File

@@ -1620,6 +1620,25 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
end
end

describe "GET /api/pleroma/admin/statuses/:id" do
test "not found", %{conn: conn} do
assert conn
|> get("/api/pleroma/admin/statuses/not_found")
|> json_response(:not_found)
end

test "shows activity", %{conn: conn} do
activity = insert(:note_activity)

response =
conn
|> get("/api/pleroma/admin/statuses/#{activity.id}")
|> json_response(200)

assert response["id"] == activity.id
end
end

describe "PUT /api/pleroma/admin/statuses/:id" do
setup do
activity = insert(:note_activity)


Loading…
Cancel
Save