Add friends endpoint.
authorRoger Braun <roger@rogerbraun.net>
Thu, 20 Jul 2017 18:35:30 +0000 (20:35 +0200)
committerRoger Braun <roger@rogerbraun.net>
Thu, 20 Jul 2017 18:35:30 +0000 (20:35 +0200)
lib/pleroma/web/router.ex
lib/pleroma/web/twitter_api/twitter_api_controller.ex
test/web/twitter_api/twitter_api_controller_test.exs

index 84a39d81728f085c13ef6dcc2f34fba470a59651..34207a62f3785326d7206a1b11b0ce4e46dba606 100644 (file)
@@ -72,6 +72,7 @@ defmodule Pleroma.Web.Router do
     post "/qvitter/update_avatar", TwitterAPI.Controller, :update_avatar
 
     get "/statuses/followers", TwitterAPI.Controller, :followers
+    get "/statuses/friends", TwitterAPI.Controller, :friends
   end
 
   pipeline :ostatus do
index ea30306760857e9f8ac2b6cb3901cd3380b89ed6..9b1c74a3f085eae6defb09a3a1593ffb186a45cc 100644 (file)
@@ -218,6 +218,14 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
     end
   end
 
+  def friends(%{assigns: %{user: user}} = conn, _params) do
+    with {:ok, friends} <- User.get_friends(user) do
+      render(conn, UserView, "index.json", %{users: friends, for: user})
+    else
+      _e -> bad_request_reply(conn, "Can't get friends")
+    end
+  end
+
   defp bad_request_reply(conn, error_message) do
     json = error_json(conn, error_message)
     json_reply(conn, 400, json)
index 4bf1c928b6c5e7ddb2aecbde314e964764e9998a..8c689d7d3efddf02f9f15179cf135b45617ce2bb 100644 (file)
@@ -437,6 +437,24 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
     end
   end
 
+  describe "GET /api/statuses/friends" do
+    test "it returns a user's friends", %{conn: conn} do
+      user = insert(:user)
+      followed_one = insert(:user)
+      followed_two = insert(:user)
+      not_followed = insert(:user)
+
+      {:ok, user} = User.follow(user, followed_one)
+      {:ok, user} = User.follow(user, followed_two)
+
+      conn = conn
+      |> assign(:user, user)
+      |> get("/api/statuses/friends")
+
+      assert json_response(conn, 200) == UserView.render("index.json", %{users: [followed_one, followed_two], for: user})
+    end
+  end
+
   defp valid_user(_context) do
     user = insert(:user)
     [user: user]