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.ModerationLog
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.Web.AdminAPI
|
alias Pleroma.Web.AdminAPI
|
||||||
|
alias Pleroma.Web.ApiSpec
|
||||||
alias Pleroma.Web.Plugs.OAuthScopesPlug
|
alias Pleroma.Web.Plugs.OAuthScopesPlug
|
||||||
|
|
||||||
plug(
|
plug(
|
||||||
@ -22,15 +23,19 @@ defmodule Pleroma.Web.AdminAPI.TagController do
|
|||||||
%{scopes: ["read:accounts"], admin: true} when action in [:list]
|
%{scopes: ["read:accounts"], admin: true} when action in [:list]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
plug(ApiSpec.CastAndValidate)
|
||||||
|
|
||||||
action_fallback(AdminAPI.FallbackController)
|
action_fallback(AdminAPI.FallbackController)
|
||||||
|
|
||||||
|
defdelegate open_api_operation(action), to: ApiSpec.Admin.TagOperation
|
||||||
|
|
||||||
def list(%{assigns: %{user: _admin}} = conn, _) do
|
def list(%{assigns: %{user: _admin}} = conn, _) do
|
||||||
tags = Pleroma.Tag.list_tags()
|
tags = Pleroma.Tag.list_tags()
|
||||||
|
|
||||||
json(conn, tags)
|
json(conn, tags)
|
||||||
end
|
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
|
with {:ok, _} <- User.tag(nicknames, tags) do
|
||||||
ModerationLog.insert_log(%{
|
ModerationLog.insert_log(%{
|
||||||
actor: admin,
|
actor: admin,
|
||||||
@ -43,7 +48,7 @@ defmodule Pleroma.Web.AdminAPI.TagController do
|
|||||||
end
|
end
|
||||||
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
|
with {:ok, _} <- User.untag(nicknames, tags) do
|
||||||
ModerationLog.insert_log(%{
|
ModerationLog.insert_log(%{
|
||||||
actor: admin,
|
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
|
conn
|
||||||
|> put_req_header("accept", "application/json")
|
|> put_req_header("accept", "application/json")
|
||||||
|> get("/api/pleroma/admin/users/tag")
|
|> get("/api/pleroma/admin/users/tag")
|
||||||
|> json_response(200)
|
|> json_response_and_validate_schema(200)
|
||||||
|
|
||||||
assert [
|
assert [
|
||||||
"mrf_tag:disable-any-subscription",
|
"mrf_tag:disable-any-subscription",
|
||||||
|
Loading…
Reference in New Issue
Block a user