Add spec for AccountController.followers

This commit is contained in:
Egor Kislitsyn 2020-04-08 23:16:20 +04:00
commit bd6e2b300f
No known key found for this signature in database
GPG key ID: 1B49CB15B71E7805
4 changed files with 42 additions and 2 deletions

View file

@ -11,6 +11,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest
alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse
alias Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse
alias Pleroma.Web.ApiSpec.Schemas.AccountsResponse
alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest
alias Pleroma.Web.ApiSpec.Schemas.BooleanLike
alias Pleroma.Web.ApiSpec.Schemas.StatusesResponse
@ -139,7 +140,23 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
end
def followers_operation do
:ok
%Operation{
tags: ["accounts"],
summary: "Followers",
operationId: "AccountController.followers",
security: [%{"oAuth" => ["read:accounts"]}],
description:
"Accounts which follow the given account, if network is not hidden by the account owner.",
parameters: [
%Reference{"$ref": "#/components/parameters/accountIdOrNickname"},
Operation.parameter(:max_id, :query, :string, "Max ID"),
Operation.parameter(:since_id, :query, :string, "Since ID"),
Operation.parameter(:limit, :query, :integer, "Limit")
],
responses: %{
200 => Operation.response("Accounts", "application/json", AccountsResponse)
}
}
end
def following_operation, do: :ok

View file

@ -0,0 +1,13 @@
# 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.Schemas.AccountsResponse do
require OpenApiSpex
OpenApiSpex.schema(%{
title: "AccountsResponse",
type: :array,
items: Pleroma.Web.ApiSpec.Schemas.Account
})
end

View file

@ -89,7 +89,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do
:update_credentials,
:relationships,
:show,
:statuses
:statuses,
:followers
]
)
@ -284,6 +285,11 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do
@doc "GET /api/v1/accounts/:id/followers"
def followers(%{assigns: %{user: for_user, account: user}} = conn, params) do
params =
params
|> Enum.map(fn {key, value} -> {to_string(key), value} end)
|> Enum.into(%{})
followers =
cond do
for_user && user.id == for_user.id -> MastodonAPI.get_followers(user, params)