logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: d168ef5a9eb4fc074b042a6dea6d7971d1972c06
parent: ad5001828ec77cf9fdf4bfb93ad53568a66bfe8b
Author: Roger Braun <rbraun@Bobble.local>
Date:   Wed, 13 Sep 2017 17:36:02 +0200

MastoAPI: Add accounts getting.

Diffstat:

Mlib/pleroma/web/mastodon_api/mastodon_api_controller.ex11+++++++++++
Mlib/pleroma/web/router.ex27++++++++++++++-------------
Mtest/web/mastodon_api/mastodon_api_controller_test.exs15+++++++++++++++
3 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -28,6 +28,17 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do json(conn, account) end + def user(conn, %{"id" => id}) do + with %User{} = user <- Repo.get(User, id) do + account = AccountView.render("account.json", %{user: user}) + json(conn, account) + else + _e -> conn + |> put_status(404) + |> json(%{error: "Can't find user"}) + end + end + def masto_instance(conn, _params) do response = %{ uri: Web.base_url, diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex @@ -40,19 +40,6 @@ defmodule Pleroma.Web.Router do end scope "/api/v1", Pleroma.Web.MastodonAPI do - pipe_through :api - get "/instance", MastodonAPIController, :masto_instance - post "/apps", MastodonAPIController, :create_app - - get "/timelines/public", MastodonAPIController, :public_timeline - - get "/statuses/:id", MastodonAPIController, :get_status - get "/statuses/:id/context", MastodonAPIController, :get_context - - get "/accounts/:id/statuses", MastodonAPIController, :user_statuses - end - - scope "/api/v1", Pleroma.Web.MastodonAPI do pipe_through :authenticated_api get "/accounts/verify_credentials", MastodonAPIController, :verify_credentials @@ -70,6 +57,20 @@ defmodule Pleroma.Web.Router do get "/notifications", MastodonAPIController, :notifications end + scope "/api/v1", Pleroma.Web.MastodonAPI do + pipe_through :api + get "/instance", MastodonAPIController, :masto_instance + post "/apps", MastodonAPIController, :create_app + + get "/timelines/public", MastodonAPIController, :public_timeline + + get "/statuses/:id", MastodonAPIController, :get_status + get "/statuses/:id/context", MastodonAPIController, :get_context + + get "/accounts/:id/statuses", MastodonAPIController, :user_statuses + get "/accounts/:id", MastodonAPIController, :user + end + scope "/api", Pleroma.Web do pipe_through :config diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -198,4 +198,19 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do assert other_user.id == relationship["id"] end end + + test "account fetching", %{conn: conn} do + user = insert(:user) + + conn = conn + |> get("/api/v1/accounts/#{user.id}") + + assert %{"id" => id} = json_response(conn, 200) + assert id == user.id + + conn = build_conn() + |> get("/api/v1/accounts/-1") + + assert %{"error" => "Can't find user"} = json_response(conn, 404) + end end