forked from AkkomaGang/akkoma
Merge branch 'mastodon-lookup' into 'develop'
MastoAPI: Add `GET /api/v1/accounts/lookup` See merge request pleroma/pleroma!3584
This commit is contained in:
commit
b5b98f9e10
4 changed files with 59 additions and 1 deletions
|
@ -400,6 +400,26 @@ def blocks_operation do
|
||||||
}
|
}
|
||||||
end
|
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
|
def endorsements_operation do
|
||||||
%Operation{
|
%Operation{
|
||||||
tags: ["Retrieve account information"],
|
tags: ["Retrieve account information"],
|
||||||
|
|
|
@ -32,7 +32,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do
|
||||||
|
|
||||||
plug(Pleroma.Web.ApiSpec.CastAndValidate)
|
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])
|
plug(:skip_public_check when action in [:show, :statuses])
|
||||||
|
|
||||||
|
@ -492,6 +492,18 @@ def blocks(%{assigns: %{user: user}} = conn, params) do
|
||||||
|> render("index.json", users: users, for: user, as: :user)
|
|> render("index.json", users: users, for: user, as: :user)
|
||||||
end
|
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"
|
@doc "GET /api/v1/endorsements"
|
||||||
def endorsements(conn, params), do: MastodonAPIController.empty_array(conn, params)
|
def endorsements(conn, params), do: MastodonAPIController.empty_array(conn, params)
|
||||||
|
|
||||||
|
|
|
@ -585,6 +585,8 @@ defmodule Pleroma.Web.Router do
|
||||||
get("/accounts/search", SearchController, :account_search)
|
get("/accounts/search", SearchController, :account_search)
|
||||||
get("/search", SearchController, :search)
|
get("/search", SearchController, :search)
|
||||||
|
|
||||||
|
get("/accounts/lookup", AccountController, :lookup)
|
||||||
|
|
||||||
get("/accounts/:id/statuses", AccountController, :statuses)
|
get("/accounts/:id/statuses", AccountController, :statuses)
|
||||||
get("/accounts/:id/followers", AccountController, :followers)
|
get("/accounts/:id/followers", AccountController, :followers)
|
||||||
get("/accounts/:id/following", AccountController, :following)
|
get("/accounts/:id/following", AccountController, :following)
|
||||||
|
|
|
@ -1798,6 +1798,30 @@ test "getting a list of blocks" do
|
||||||
assert [%{"id" => ^id2}] = result
|
assert [%{"id" => ^id2}] = result
|
||||||
end
|
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
|
||||||
|
|
||||||
test "create a note on a user" do
|
test "create a note on a user" do
|
||||||
%{conn: conn} = oauth_access(["write:accounts", "read:follows"])
|
%{conn: conn} = oauth_access(["write:accounts", "read:follows"])
|
||||||
other_user = insert(:user)
|
other_user = insert(:user)
|
||||||
|
|
Loading…
Reference in a new issue