commit: 5637d163e6eb365c69f0e79e43306156241f6494
parent 9d1c0ec18dcf407bbac14868f64e98e1ec499c34
Author: Lain Iwakura <lain@soykaf.club>
Date:   Thu, 30 Nov 2017 14:59:44 +0100
MastodonAPI: Add proper user count.
Diffstat:
3 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
@@ -329,4 +329,9 @@ defmodule Pleroma.User do
     Enum.member?(blocks, ap_id)
   end
 
+  def local_user_query() do
+    from u in User,
+      where: u.local == true
+  end
+
 end
diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
@@ -93,6 +93,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
   @instance Application.get_env(:pleroma, :instance)
 
   def masto_instance(conn, _params) do
+    user_count = Repo.aggregate(User.local_user_query, :count, :id)
     response = %{
       uri: Web.base_url,
       title: Keyword.get(@instance, :name),
@@ -103,8 +104,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
         streaming_api: String.replace(Web.base_url, ["http","https"], "wss")
       },
       stats: %{
-        user_count: 1,
         status_count: 2,
+        user_count: user_count,
         domain_count: 3
       },
       max_toot_chars: Keyword.get(@instance, :limit)
diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs
@@ -573,4 +573,19 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
       assert user["header"] != "https://placehold.it/700x335"
     end
   end
+
+  test "get instance information" do
+    insert(:user, %{local: true})
+    user = insert(:user, %{local: true})
+    insert(:user, %{local: false})
+
+    {:ok, _} = TwitterAPI.create_status(user, %{"status" => "cofe"})
+
+    conn = conn
+    |> get("/api/v1/instance")
+
+    assert result = json_response(conn, 200)
+
+    assert result["stats"]["user_count"] == 2
+  end
 end