Merge remote-tracking branch 'origin/develop' into account-endorsements

This commit is contained in:
marcin mikołajczak 2022-01-10 20:04:14 +01:00
commit 4f249b2397
14 changed files with 121 additions and 31 deletions

View file

@ -428,6 +428,26 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
}
end
def lookup_operation do
%Operation{
tags: ["Account lookup"],
summary: "Find a user by nickname",
operationId: "AccountController.lookup",
parameters: [
Operation.parameter(
:acct,
:query,
:string,
"User nickname"
)
],
responses: %{
200 => Operation.response("Account", "application/json", Account),
404 => Operation.response("Error", "application/json", ApiError)
}
}
end
def endorsements_operation do
%Operation{
tags: ["Retrieve account information"],

View file

@ -32,7 +32,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do
plug(Pleroma.Web.ApiSpec.CastAndValidate)
plug(:skip_auth when action == :create)
plug(:skip_auth when action in [:create, :lookup])
plug(:skip_public_check when action in [:show, :statuses])
@ -510,6 +510,18 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do
|> render("index.json", users: users, for: user, as: :user)
end
@doc "GET /api/v1/accounts/lookup"
def lookup(conn, %{acct: nickname} = _params) do
with %User{} = user <- User.get_by_nickname(nickname) do
render(conn, "show.json",
user: user,
skip_visibility_check: true
)
else
error -> user_visibility_error(conn, error)
end
end
@doc "GET /api/v1/endorsements"
def endorsements(%{assigns: %{user: user}} = conn, params) do
users =

View file

@ -588,6 +588,8 @@ defmodule Pleroma.Web.Router do
get("/accounts/search", SearchController, :account_search)
get("/search", SearchController, :search)
get("/accounts/lookup", AccountController, :lookup)
get("/accounts/:id/statuses", AccountController, :statuses)
get("/accounts/:id/followers", AccountController, :followers)
get("/accounts/:id/following", AccountController, :following)