MastodonAPI: Add proper user count.
authorLain Iwakura <lain@soykaf.club>
Thu, 30 Nov 2017 13:59:44 +0000 (14:59 +0100)
committerLain Iwakura <lain@soykaf.club>
Thu, 30 Nov 2017 13:59:44 +0000 (14:59 +0100)
lib/pleroma/user.ex
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
test/web/mastodon_api/mastodon_api_controller_test.exs

index 68ffe184b7b36fa031ecdbca12259fd88ec5609e..afc62f2657dec4a9dc3b6086675817283c694c35 100644 (file)
@@ -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
index 82887966c257469d87247f9d8229c7c4f33044ba..61bf8b4b8ed73aaeceeebb31083c94d4739cf11d 100644 (file)
@@ -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)
index c8b9295018be66672f530ce67e0e979bf82d7f26..fc00105695bcce4219a90b0d76c41acd4caa67a3 100644 (file)
@@ -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