[Pleroma.Web.MastodonAPI.AccountView]: Add bot field
authorHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Thu, 9 Aug 2018 23:44:38 +0000 (01:44 +0200)
committerHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Mon, 27 Aug 2018 13:09:04 +0000 (15:09 +0200)
lib/pleroma/web/mastodon_api/views/account_view.ex
test/web/mastodon_api/account_view_test.exs

index d9edcae7ffe51277a803fa49b18331cc27549f44..9dd635a63ece60cace612e049949d1237d4bf973 100644 (file)
@@ -13,6 +13,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
     image = User.avatar_url(user) |> MediaProxy.url()
     header = User.banner_url(user) |> MediaProxy.url()
     user_info = User.user_info(user)
+    bot = (user.info["source_data"]["type"] || "Person") in ["Application", "Service"]
 
     emojis =
       (user.info["source_data"]["tag"] || [])
@@ -44,6 +45,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
       header_static: header,
       emojis: emojis,
       fields: [],
+      bot: bot,
       source: %{
         note: "",
         privacy: "public",
index 35c8a1fb081c961d41e3a9916a765ec1bda0db90..5393732eb1637806ca6f4ec7b725aa28509f506b 100644 (file)
@@ -49,6 +49,44 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do
         }
       ],
       fields: [],
+      bot: false,
+      source: %{
+        note: "",
+        privacy: "public",
+        sensitive: "false"
+      }
+    }
+
+    assert expected == AccountView.render("account.json", %{user: user})
+  end
+
+  test "Represent a Service(bot) account" do
+    user =
+      insert(:user, %{
+        info: %{"note_count" => 5, "follower_count" => 3, "source_data" => %{"type" => "Service"}},
+        nickname: "shp@shitposter.club",
+        inserted_at: ~N[2017-08-15 15:47:06.597036]
+      })
+
+    expected = %{
+      id: to_string(user.id),
+      username: "shp",
+      acct: user.nickname,
+      display_name: user.name,
+      locked: false,
+      created_at: "2017-08-15T15:47:06.000Z",
+      followers_count: 3,
+      following_count: 0,
+      statuses_count: 5,
+      note: user.bio,
+      url: user.ap_id,
+      avatar: "http://localhost:4001/images/avi.png",
+      avatar_static: "http://localhost:4001/images/avi.png",
+      header: "http://localhost:4001/images/banner.png",
+      header_static: "http://localhost:4001/images/banner.png",
+      emojis: [],
+      fields: [],
+      bot: true,
       source: %{
         note: "",
         privacy: "public",