forked from AkkomaGang/akkoma
9fcff7851f
Too many changes in OpenAPI spec to describe each one, but basically it is tag fixes, bringing consitency to operation summaries and fixing some incorrect information.
110 lines
3.4 KiB
Elixir
110 lines
3.4 KiB
Elixir
# Pleroma: A lightweight social networking server
|
|
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
defmodule Pleroma.Web.ApiSpec.EmojiReactionOperation do
|
|
alias OpenApiSpex.Operation
|
|
alias OpenApiSpex.Schema
|
|
alias Pleroma.Web.ApiSpec.Schemas.Account
|
|
alias Pleroma.Web.ApiSpec.Schemas.ApiError
|
|
alias Pleroma.Web.ApiSpec.Schemas.FlakeID
|
|
alias Pleroma.Web.ApiSpec.Schemas.Status
|
|
|
|
def open_api_operation(action) do
|
|
operation = String.to_existing_atom("#{action}_operation")
|
|
apply(__MODULE__, operation, [])
|
|
end
|
|
|
|
def index_operation do
|
|
%Operation{
|
|
tags: ["Emoji reactions"],
|
|
summary:
|
|
"Get an object of emoji to account mappings with accounts that reacted to the post",
|
|
parameters: [
|
|
Operation.parameter(:id, :path, FlakeID, "Status ID", required: true),
|
|
Operation.parameter(:emoji, :path, :string, "Filter by a single unicode emoji",
|
|
required: nil
|
|
),
|
|
Operation.parameter(
|
|
:with_muted,
|
|
:query,
|
|
:boolean,
|
|
"Include reactions from muted acccounts."
|
|
)
|
|
],
|
|
security: [%{"oAuth" => ["read:statuses"]}],
|
|
operationId: "EmojiReactionController.index",
|
|
responses: %{
|
|
200 => array_of_reactions_response()
|
|
}
|
|
}
|
|
end
|
|
|
|
def create_operation do
|
|
%Operation{
|
|
tags: ["Emoji reactions"],
|
|
summary: "React to a post with a unicode emoji",
|
|
parameters: [
|
|
Operation.parameter(:id, :path, FlakeID, "Status ID", required: true),
|
|
Operation.parameter(:emoji, :path, :string, "A single character unicode emoji",
|
|
required: true
|
|
)
|
|
],
|
|
security: [%{"oAuth" => ["write:statuses"]}],
|
|
operationId: "EmojiReactionController.create",
|
|
responses: %{
|
|
200 => Operation.response("Status", "application/json", Status),
|
|
400 => Operation.response("Bad Request", "application/json", ApiError)
|
|
}
|
|
}
|
|
end
|
|
|
|
def delete_operation do
|
|
%Operation{
|
|
tags: ["Emoji reactions"],
|
|
summary: "Remove a reaction to a post with a unicode emoji",
|
|
parameters: [
|
|
Operation.parameter(:id, :path, FlakeID, "Status ID", required: true),
|
|
Operation.parameter(:emoji, :path, :string, "A single character unicode emoji",
|
|
required: true
|
|
)
|
|
],
|
|
security: [%{"oAuth" => ["write:statuses"]}],
|
|
operationId: "EmojiReactionController.delete",
|
|
responses: %{
|
|
200 => Operation.response("Status", "application/json", Status)
|
|
}
|
|
}
|
|
end
|
|
|
|
defp array_of_reactions_response do
|
|
Operation.response("Array of Emoji reactions", "application/json", %Schema{
|
|
type: :array,
|
|
items: emoji_reaction(),
|
|
example: [emoji_reaction().example]
|
|
})
|
|
end
|
|
|
|
defp emoji_reaction do
|
|
%Schema{
|
|
title: "EmojiReaction",
|
|
type: :object,
|
|
properties: %{
|
|
name: %Schema{type: :string, description: "Emoji"},
|
|
count: %Schema{type: :integer, description: "Count of reactions with this emoji"},
|
|
me: %Schema{type: :boolean, description: "Did I react with this emoji?"},
|
|
accounts: %Schema{
|
|
type: :array,
|
|
items: Account,
|
|
description: "Array of accounts reacted with this emoji"
|
|
}
|
|
},
|
|
example: %{
|
|
"name" => "😱",
|
|
"count" => 1,
|
|
"me" => false,
|
|
"accounts" => [Account.schema().example]
|
|
}
|
|
}
|
|
end
|
|
end
|