diff options
author | lambda <pleromagit@rogerbraun.net> | 2018-11-10 12:37:18 +0000 |
---|---|---|
committer | lambda <pleromagit@rogerbraun.net> | 2018-11-10 12:37:18 +0000 |
commit | f745e823f0acf6e10f777d6b924993f99e26a2c2 (patch) | |
tree | 4e3a7df4fd66796e427c8dcb21feac4585cc55d3 /lib | |
parent | 9cdbac6843db7bc5a3a69bc14d9368d5f9d7b4e6 (diff) | |
parent | 69b8c0e299c9d4ec16bd056adf2fede326de7f69 (diff) | |
download | pleroma-f745e823f0acf6e10f777d6b924993f99e26a2c2.tar.gz pleroma-f745e823f0acf6e10f777d6b924993f99e26a2c2.zip |
Merge branch 'bugfix/json-ld-object-sanitization' into 'develop'
JSON-LD: object sanitization
See merge request pleroma/pleroma!438
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 25 | ||||
-rw-r--r-- | lib/pleroma/web/activity_pub/views/object_view.ex | 14 |
2 files changed, 38 insertions, 1 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) diff --git a/lib/pleroma/web/activity_pub/views/object_view.ex b/lib/pleroma/web/activity_pub/views/object_view.ex index df734a871..1911ddfb7 100644 --- a/lib/pleroma/web/activity_pub/views/object_view.ex +++ b/lib/pleroma/web/activity_pub/views/object_view.ex @@ -1,11 +1,23 @@ defmodule Pleroma.Web.ActivityPub.ObjectView do use Pleroma.Web, :view + alias Pleroma.{Object, Activity} alias Pleroma.Web.ActivityPub.Transmogrifier - def render("object.json", %{object: object}) do + def render("object.json", %{object: %Object{} = object}) do base = Pleroma.Web.ActivityPub.Utils.make_json_ld_header() additional = Transmogrifier.prepare_object(object.data) Map.merge(base, additional) end + + def render("object.json", %{object: %Activity{} = activity}) do + base = Pleroma.Web.ActivityPub.Utils.make_json_ld_header() + object = Object.normalize(activity.data["object"]) + + additional = + Transmogrifier.prepare_object(activity.data) + |> Map.put("object", Transmogrifier.prepare_object(object.data)) + + Map.merge(base, additional) + end end |