added api spec
This commit is contained in:
parent
f0eb5cf5b2
commit
bc83fedfb3
@ -10,6 +10,7 @@ defmodule Pleroma.Web.AdminAPI.TagController do
|
||||
alias Pleroma.ModerationLog
|
||||
alias Pleroma.User
|
||||
alias Pleroma.Web.AdminAPI
|
||||
alias Pleroma.Web.ApiSpec
|
||||
alias Pleroma.Web.Plugs.OAuthScopesPlug
|
||||
|
||||
plug(
|
||||
@ -22,15 +23,19 @@ defmodule Pleroma.Web.AdminAPI.TagController do
|
||||
%{scopes: ["read:accounts"], admin: true} when action in [:list]
|
||||
)
|
||||
|
||||
plug(ApiSpec.CastAndValidate)
|
||||
|
||||
action_fallback(AdminAPI.FallbackController)
|
||||
|
||||
defdelegate open_api_operation(action), to: ApiSpec.Admin.TagOperation
|
||||
|
||||
def list(%{assigns: %{user: _admin}} = conn, _) do
|
||||
tags = Pleroma.Tag.list_tags()
|
||||
|
||||
json(conn, tags)
|
||||
end
|
||||
|
||||
def tag(%{assigns: %{user: admin}} = conn, %{"nicknames" => nicknames, "tags" => tags}) do
|
||||
def tag(%{assigns: %{user: admin}} = conn, %{nicknames: nicknames, tags: tags}) do
|
||||
with {:ok, _} <- User.tag(nicknames, tags) do
|
||||
ModerationLog.insert_log(%{
|
||||
actor: admin,
|
||||
@ -43,7 +48,7 @@ defmodule Pleroma.Web.AdminAPI.TagController do
|
||||
end
|
||||
end
|
||||
|
||||
def untag(%{assigns: %{user: admin}} = conn, %{"nicknames" => nicknames, "tags" => tags}) do
|
||||
def untag(%{assigns: %{user: admin}} = conn, %{nicknames: nicknames, tags: tags}) do
|
||||
with {:ok, _} <- User.untag(nicknames, tags) do
|
||||
ModerationLog.insert_log(%{
|
||||
actor: admin,
|
||||
|
83
lib/pleroma/web/api_spec/operations/admin/tag_operation.ex
Normal file
83
lib/pleroma/web/api_spec/operations/admin/tag_operation.ex
Normal file
@ -0,0 +1,83 @@
|
||||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.Web.ApiSpec.Admin.TagOperation do
|
||||
alias OpenApiSpex.Operation
|
||||
alias OpenApiSpex.Schema
|
||||
|
||||
import Pleroma.Web.ApiSpec.Helpers
|
||||
|
||||
def open_api_operation(action) do
|
||||
operation = String.to_existing_atom("#{action}_operation")
|
||||
apply(__MODULE__, operation, [])
|
||||
end
|
||||
|
||||
def list_operation do
|
||||
%Operation{
|
||||
tags: ["Admin", "Tags"],
|
||||
summary: "List available tags.",
|
||||
operationId: "AdminAPI.TagController.list",
|
||||
responses: %{
|
||||
200 =>
|
||||
Operation.response("Array of tags", "application/json", %Schema{
|
||||
type: :array,
|
||||
items: %Schema{type: :string}
|
||||
})
|
||||
},
|
||||
security: [%{"oAuth" => ["read:accounts"]}]
|
||||
}
|
||||
end
|
||||
|
||||
def tag_operation do
|
||||
%Operation{
|
||||
tags: ["Admin", "Tags"],
|
||||
summary: "Adds tags to users.",
|
||||
operationId: "AdminAPI.TagController.tag",
|
||||
parameters: [
|
||||
Operation.parameter(
|
||||
:nicknames,
|
||||
:query,
|
||||
%Schema{type: :array, items: %Schema{type: :string}},
|
||||
"User's nicknames"
|
||||
),
|
||||
Operation.parameter(
|
||||
:tags,
|
||||
:query,
|
||||
%Schema{type: :array, items: %Schema{type: :string}},
|
||||
"tags"
|
||||
)
|
||||
],
|
||||
responses: %{
|
||||
200 => empty_object_response()
|
||||
},
|
||||
security: [%{"oAuth" => ["write:accounts"]}]
|
||||
}
|
||||
end
|
||||
|
||||
def untag_operation do
|
||||
%Operation{
|
||||
tags: ["Admin", "Tags"],
|
||||
summary: "Remove tags from users.",
|
||||
operationId: "AdminAPI.TagController.untag",
|
||||
parameters: [
|
||||
Operation.parameter(
|
||||
:nicknames,
|
||||
:query,
|
||||
%Schema{type: :array, items: %Schema{type: :string}},
|
||||
"User's nicknames"
|
||||
),
|
||||
Operation.parameter(
|
||||
:tags,
|
||||
:query,
|
||||
%Schema{type: :array, items: %Schema{type: :string}},
|
||||
"tags"
|
||||
)
|
||||
],
|
||||
responses: %{
|
||||
200 => empty_object_response()
|
||||
},
|
||||
security: [%{"oAuth" => ["write:accounts"]}]
|
||||
}
|
||||
end
|
||||
end
|
@ -40,7 +40,7 @@ defmodule Pleroma.Web.AdminAPI.TagControllerTest do
|
||||
conn
|
||||
|> put_req_header("accept", "application/json")
|
||||
|> get("/api/pleroma/admin/users/tag")
|
||||
|> json_response(200)
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert [
|
||||
"mrf_tag:disable-any-subscription",
|
||||
|
Loading…
Reference in New Issue
Block a user