MastoAPI: Add accounts getting.
authorRoger Braun <rbraun@Bobble.local>
Wed, 13 Sep 2017 15:36:02 +0000 (17:36 +0200)
committerRoger Braun <rbraun@Bobble.local>
Wed, 13 Sep 2017 15:36:02 +0000 (17:36 +0200)
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
lib/pleroma/web/router.ex
test/web/mastodon_api/mastodon_api_controller_test.exs

index 14f7eeeb6c08bed06482a49d7d0a726a3f8a7543..f17cf40e6f997f3af467c87edb3a613ac3a028e8 100644 (file)
@@ -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,
index 883fd56f4b0214ccea84b81d091dfd0dba9199fd..0bd8e40c4a28c251cc93617a6ac081c2676058db 100644 (file)
@@ -39,19 +39,6 @@ defmodule Pleroma.Web.Router do
     post "/token", OAuthController, :token_exchange
   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
 
@@ -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
 
index 52415bb50550c3ba2db0abed02ae0a7568e6184c..fcb3f80f55ccf2f27de1061e4f9d76e1f5e15d8c 100644 (file)
@@ -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