diff options
| -rw-r--r-- | lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 11 | ||||
| -rw-r--r-- | lib/pleroma/web/router.ex | 27 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 15 | 
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 index 14f7eeeb6..f17cf40e6 100644 --- 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 index 883fd56f4..0bd8e40c4 100644 --- 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 index 52415bb50..fcb3f80f5 100644 --- 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 | 
