mirror of
https://akkoma.dev/AkkomaGang/akkoma.git
synced 2024-12-18 15:58:30 +00:00
MastoAPI: Add GET /api/v1/accounts/lookup
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
parent
1fa616638b
commit
f734579965
|
@ -371,6 +371,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"],
|
||||
|
|
|
@ -477,6 +477,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(%{assigns: %{user: for_user}} = conn, %{acct: nickname} = _params) do
|
||||
with %User{} = user <- User.get_by_nickname(nickname) do
|
||||
render(conn, "show.json",
|
||||
user: user,
|
||||
for: for_user
|
||||
)
|
||||
else
|
||||
error -> user_visibility_error(conn, error)
|
||||
end
|
||||
end
|
||||
|
||||
@doc "GET /api/v1/endorsements"
|
||||
def endorsements(conn, params), do: MastodonAPIController.empty_array(conn, params)
|
||||
|
||||
|
|
|
@ -573,6 +573,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)
|
||||
|
|
|
@ -1776,4 +1776,28 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do
|
|||
|
||||
assert [%{"id" => ^id2}] = result
|
||||
end
|
||||
|
||||
test "account lookup", %{conn: conn} do
|
||||
%{nickname: acct} = insert(:user, %{nickname: "nickname"})
|
||||
%{nickname: acct_two} = insert(:user, %{nickname: "nickname@notlocaldoma.in"})
|
||||
|
||||
result =
|
||||
conn
|
||||
|> get("/api/v1/accounts/lookup?acct=#{acct}")
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert %{"acct" => ^acct} = result
|
||||
|
||||
result =
|
||||
conn
|
||||
|> get("/api/v1/accounts/lookup?acct=#{acct_two}")
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert %{"acct" => ^acct_two} = result
|
||||
|
||||
_result =
|
||||
conn
|
||||
|> get("/api/v1/accounts/lookup?acct=unexisting_nickname")
|
||||
|> json_response_and_validate_schema(404)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue