diff options
author | rinpatch <rinpatch@sdf.org> | 2019-05-09 22:27:00 +0300 |
---|---|---|
committer | rinpatch <rinpatch@sdf.org> | 2019-05-09 22:27:00 +0300 |
commit | e4523c301023de0d4cff5ca0168094fea25955a2 (patch) | |
tree | 151bc29623a2ab24020f01020b8c0e1d738ed99c | |
parent | c2efc689d11aff541a1851d9bb16954c7907d653 (diff) | |
download | pleroma-e4523c301023de0d4cff5ca0168094fea25955a2.tar.gz |
Fix get_in_reply_to in OStatus' activity representer depending on embedded objects
-rw-r--r-- | lib/pleroma/web/ostatus/activity_representer.ex | 19 | ||||
-rw-r--r-- | test/web/ostatus/activity_representer_test.exs | 30 |
2 files changed, 23 insertions, 26 deletions
diff --git a/lib/pleroma/web/ostatus/activity_representer.ex b/lib/pleroma/web/ostatus/activity_representer.ex index 166691a09..a7832a3d9 100644 --- a/lib/pleroma/web/ostatus/activity_representer.ex +++ b/lib/pleroma/web/ostatus/activity_representer.ex @@ -18,15 +18,18 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do end end - defp get_in_reply_to(%{"object" => %{"inReplyTo" => in_reply_to}}) do - [ - {:"thr:in-reply-to", - [ref: to_charlist(in_reply_to), href: to_charlist(get_href(in_reply_to))], []} - ] + defp get_in_reply_to(activity) do + with %Object{data: %{"inReplyTo" => in_reply_to}} <- Object.normalize(activity) do + [ + {:"thr:in-reply-to", + [ref: to_charlist(in_reply_to), href: to_charlist(get_href(in_reply_to))], []} + ] + else + _ -> + [] + end end - defp get_in_reply_to(_), do: [] - defp get_mentions(to) do Enum.map(to, fn id -> cond do @@ -98,7 +101,7 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do []} end) - in_reply_to = get_in_reply_to(activity.data) + in_reply_to = get_in_reply_to(activity) author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: [] mentions = activity.recipients |> get_mentions diff --git a/test/web/ostatus/activity_representer_test.exs b/test/web/ostatus/activity_representer_test.exs index a4bb68c4d..16ee02abb 100644 --- a/test/web/ostatus/activity_representer_test.exs +++ b/test/web/ostatus/activity_representer_test.exs @@ -67,37 +67,31 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do end test "a reply note" do - note = insert(:note_activity) - answer = insert(:note_activity) - object = answer.data["object"] - object = Map.put(object, "inReplyTo", note.data["object"]["id"]) - - data = %{answer.data | "object" => object} - answer = %{answer | data: data} - - note_object = Object.get_by_ap_id(note.data["object"]["id"]) + user = insert(:user) + note_object = insert(:note) + _note = insert(:note_activity, %{note: note_object}) + object = insert(:note, %{data: %{"inReplyTo" => note_object.data["id"]}}) + answer = insert(:note_activity, %{note: object}) Repo.update!( Object.change(note_object, %{data: Map.put(note_object.data, "external_url", "someurl")}) ) - user = User.get_cached_by_ap_id(answer.data["actor"]) - expected = """ <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type> <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb> - <id>#{answer.data["object"]["id"]}</id> + <id>#{object.data["id"]}</id> <title>New note by #{user.nickname}</title> - <content type="html">#{answer.data["object"]["content"]}</content> - <published>#{answer.data["object"]["published"]}</published> - <updated>#{answer.data["object"]["published"]}</updated> + <content type="html">#{object.data["content"]}</content> + <published>#{object.data["published"]}</published> + <updated>#{object.data["published"]}</updated> <ostatus:conversation ref="#{answer.data["context"]}">#{answer.data["context"]}</ostatus:conversation> <link ref="#{answer.data["context"]}" rel="ostatus:conversation" /> <summary>2hu</summary> - <link type="application/atom+xml" href="#{answer.data["object"]["id"]}" rel="self" /> - <link type="text/html" href="#{answer.data["object"]["id"]}" rel="alternate" /> + <link type="application/atom+xml" href="#{object.data["id"]}" rel="self" /> + <link type="text/html" href="#{object.data["id"]}" rel="alternate" /> <category term="2hu"/> - <thr:in-reply-to ref="#{note.data["object"]["id"]}" href="someurl" /> + <thr:in-reply-to ref="#{note_object.data["id"]}" href="someurl" /> <link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/> <link name="2hu" rel="emoji" href="corndog.png" /> """ |