Add self links to federated statuses.
authorRoger Braun <roger@rogerbraun.net>
Wed, 3 May 2017 16:10:19 +0000 (18:10 +0200)
committerRoger Braun <roger@rogerbraun.net>
Wed, 3 May 2017 16:10:19 +0000 (18:10 +0200)
lib/pleroma/web/ostatus/activity_representer.ex
test/web/ostatus/activity_representer_test.exs

index d064b09ee7b5bb5ad39ca706c3e88abafc9c33d8..dc7526598ce8e581f64eb84d96acde45b80ca867 100644 (file)
@@ -51,7 +51,8 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do
       {:published, h.(inserted_at)},
       {:updated, h.(updated_at)},
       {:"ostatus:conversation", [], h.(activity.data["context"])},
-      {:link, [href: h.(activity.data["context"]), rel: 'ostatus:conversation'], []}
+      {:link, [href: h.(activity.data["context"]), rel: 'ostatus:conversation'], []},
+      {:link, [type: ['application/atom+xml'], href: h.(activity.data["object"]["id"]), rel: 'self'], []}
     ] ++ attachments ++ in_reply_to ++ author ++ mentions
   end
 
@@ -80,6 +81,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do
       ]},
       {:"ostatus:conversation", [], h.(activity.data["context"])},
       {:link, [href: h.(activity.data["context"]), rel: 'ostatus:conversation'], []},
+      {:link, [rel: 'self', type: ['application/atom+xml'], href: h.(activity.data["id"])], []},
       {:"thr:in-reply-to", [ref: to_charlist(activity.data["object"])], []}
     ] ++ author ++ mentions
   end
@@ -102,6 +104,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do
 
     mentions = activity.data["to"] |> get_mentions
     [
+      {:"activity:object-type", ['http://activitystrea.ms/schema/1.0/activity']},
       {:"activity:verb", ['http://activitystrea.ms/schema/1.0/share']},
       {:id, h.(activity.data["id"])},
       {:title, ['#{user.nickname} repeated a notice']},
@@ -110,6 +113,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do
       {:updated, h.(updated_at)},
       {:"ostatus:conversation", [], h.(activity.data["context"])},
       {:link, [href: h.(activity.data["context"]), rel: 'ostatus:conversation'], []},
+      {:link, [rel: 'self', type: ['application/atom+xml'], href: h.(activity.data["id"])], []},
       {:"thr:in-reply-to", [ref: to_charlist(activity.data["object"])], []},
       {:"activity:object", retweeted_xml}
     ] ++ mentions ++ author
index 7f003226bed64b9a914a65d937c1cfc4bed84796..03b3e248f802250e241083166c0114ac4304fc5a 100644 (file)
@@ -26,6 +26,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do
     <updated>#{updated_at}</updated>
     <ostatus:conversation>#{note_activity.data["context"]}</ostatus:conversation>
     <link href="#{note_activity.data["context"]}" rel="ostatus:conversation" />
+    <link type="application/atom+xml" href="#{note_activity.data["object"]["id"]}" rel="self" />
     <link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
     """
 
@@ -62,6 +63,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do
     <updated>#{updated_at}</updated>
     <ostatus:conversation>#{answer.data["context"]}</ostatus:conversation>
     <link href="#{answer.data["context"]}" rel="ostatus:conversation" />
+    <link type="application/atom+xml" href="#{answer.data["object"]["id"]}" rel="self" />
     <thr:in-reply-to ref="#{note.data["object"]["id"]}" />
     <link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
     """
@@ -94,6 +96,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do
     |> NaiveDateTime.to_iso8601
 
     expected = """
+    <activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
     <activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
     <id>#{announce.data["id"]}</id>
     <title>#{user.nickname} repeated a notice</title>
@@ -102,6 +105,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do
     <updated>#{updated_at}</updated>
     <ostatus:conversation>#{announce.data["context"]}</ostatus:conversation>
     <link href="#{announce.data["context"]}" rel="ostatus:conversation" />
+    <link rel="self" type="application/atom+xml" href="#{announce.data["id"]}"/>
     <thr:in-reply-to ref="#{note.data["object"]["id"]}" />
     <activity:object>
       #{note_xml}
@@ -144,6 +148,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do
     </activity:object>
     <ostatus:conversation>#{like.data["context"]}</ostatus:conversation>
     <link href="#{like.data["context"]}" rel="ostatus:conversation" />
+    <link rel="self" type="application/atom+xml" href="#{like.data["id"]}"/>
     <thr:in-reply-to ref="#{note.data["id"]}" />
     <link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="#{note.data["actor"]}"/>
     """