diff options
author | William Pitcock <nenolod@dereferenced.org> | 2018-11-10 12:08:53 +0000 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2018-11-10 12:24:20 +0000 |
commit | 97e50f3191f6ea8479729b639921180fcadccf73 (patch) | |
tree | 52c7c641956ecd809cef57b54a910ad47e20c83f | |
parent | f8310114a6a4154118e54ebaac6f4a96941be4a6 (diff) | |
download | pleroma-97e50f3191f6ea8479729b639921180fcadccf73.tar.gz |
activitypub: transmogrifier: sanitize internal representation details from outgoing objects
this causes JSON-LD parsers to get upset and has also lead to developer confusion from outside
projects which tried to parse our internal data. accordingly, it seems better to just remove
it.
-rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 6a0fdb433..d51d8626b 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -589,6 +589,8 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do |> prepare_attachments |> set_conversation |> set_reply_to_uri + |> strip_internal_fields + |> strip_internal_tags end # @doc @@ -755,6 +757,29 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do |> Map.put("attachment", attachments) end + defp strip_internal_fields(object) do + object + |> Map.drop([ + "likes", + "like_count", + "announcements", + "announcement_count", + "emoji", + "context_id" + ]) + end + + defp strip_internal_tags(%{"tag" => tags} = object) do + tags = + tags + |> Enum.filter(fn x -> is_map(x) end) + + object + |> Map.put("tag", tags) + end + + defp strip_internal_tags(object), do: object + defp user_upgrade_task(user) do old_follower_address = User.ap_followers(user) |