From: lain <lain@soykaf.club>
Date: Sat, 24 Feb 2018 12:06:53 +0000 (+0100)
Subject: Pleroma AP detection mechanism.
X-Git-Url: https://git.squeep.com/?a=commitdiff_plain;h=fb02300234f547363242f0a768b6d35e7a1a87be;p=akkoma

Pleroma AP detection mechanism.
---

diff --git a/lib/pleroma/web/ostatus/ostatus.ex b/lib/pleroma/web/ostatus/ostatus.ex
index 3f5cfdc8a..66e119212 100644
--- a/lib/pleroma/web/ostatus/ostatus.ex
+++ b/lib/pleroma/web/ostatus/ostatus.ex
@@ -177,6 +177,13 @@ defmodule Pleroma.Web.OStatus do
   end
 
   def maybe_update(doc, user) do
+    if "true" == string_from_xpath("//author[1]/ap_enabled", doc) do
+      Transmogrifier.upgrade_user_from_ap_id(user.ap_id)
+    else
+      maybe_update_ostatus(doc, user)
+    end
+  end
+  def maybe_update_ostatus(doc, user) do
     old_data = %{
       avatar: user.avatar,
       bio: user.bio,
diff --git a/lib/pleroma/web/ostatus/user_representer.ex b/lib/pleroma/web/ostatus/user_representer.ex
index 20ebb3e08..5af439c9d 100644
--- a/lib/pleroma/web/ostatus/user_representer.ex
+++ b/lib/pleroma/web/ostatus/user_representer.ex
@@ -12,6 +12,12 @@ defmodule Pleroma.Web.OStatus.UserRepresenter do
       []
     end
 
+    ap_enabled = if user.local do
+      [{:ap_enabled, ['true']}]
+    else
+      []
+    end
+
     [
       {:id, [ap_id]},
       {:"activity:object", ['http://activitystrea.ms/schema/1.0/person']},
@@ -22,6 +28,6 @@ defmodule Pleroma.Web.OStatus.UserRepresenter do
       {:summary, [bio]},
       {:name, [nickname]},
       {:link, [rel: 'avatar', href: avatar_url], []}
-    ] ++ banner
+    ] ++ banner ++ ap_enabled
   end
 end
diff --git a/test/web/ostatus/ostatus_test.exs b/test/web/ostatus/ostatus_test.exs
index 1dd381ac4..bb995199c 100644
--- a/test/web/ostatus/ostatus_test.exs
+++ b/test/web/ostatus/ostatus_test.exs
@@ -306,7 +306,8 @@ defmodule Pleroma.Web.OStatusTest do
         "fqn" => user,
         "bio" => "cofe",
         "avatar" => %{"type" => "Image", "url" => [%{"href" => "https://social.heldscal.la/avatar/29191-original-20170421154949.jpeg", "mediaType" => "image/jpeg", "type" => "Link"}]},
-        "subscribe_address" => "https://social.heldscal.la/main/ostatussub?profile={uri}"
+        "subscribe_address" => "https://social.heldscal.la/main/ostatussub?profile={uri}",
+        "ap_id" => nil
       }
       assert data == expected
     end
@@ -330,7 +331,8 @@ defmodule Pleroma.Web.OStatusTest do
         "fqn" => user,
         "bio" => "cofe",
         "avatar" => %{"type" => "Image", "url" => [%{"href" => "https://social.heldscal.la/avatar/29191-original-20170421154949.jpeg", "mediaType" => "image/jpeg", "type" => "Link"}]},
-        "subscribe_address" => "https://social.heldscal.la/main/ostatussub?profile={uri}"
+        "subscribe_address" => "https://social.heldscal.la/main/ostatussub?profile={uri}",
+        "ap_id" => nil
       }
       assert data == expected
     end
diff --git a/test/web/ostatus/user_representer_test.exs b/test/web/ostatus/user_representer_test.exs
index b22420379..e41dfeb3d 100644
--- a/test/web/ostatus/user_representer_test.exs
+++ b/test/web/ostatus/user_representer_test.exs
@@ -22,6 +22,7 @@ defmodule Pleroma.Web.OStatus.UserRepresenterTest do
     <name>#{user.nickname}</name>
     <link rel="avatar" href="#{User.avatar_url(user)}" />
     <link rel="header" href="#{User.banner_url(user)}" />
+    <ap_enabled>true</ap_enabled>
     """
 
     assert clean(res) == clean(expected)