diff options
author | Haelwenn <contact+git.pleroma.social@hacktivis.me> | 2020-07-27 21:20:52 +0000 |
---|---|---|
committer | Haelwenn <contact+git.pleroma.social@hacktivis.me> | 2020-07-27 21:20:52 +0000 |
commit | 057936bf0b5af2cc35a6ecb1c800a841ca4760a8 (patch) | |
tree | 5f7aebf08a4cb5c2b2f020b5122c885f1a50ec6a /lib | |
parent | 2a3abfd326f0cbb588dfe66a23e9783be3038a5e (diff) | |
parent | 9e6f4694dd21f92bb2292e819d0f7f1cad149887 (diff) | |
download | pleroma-057936bf0b5af2cc35a6ecb1c800a841ca4760a8.tar.gz |
Merge branch 'embedded-object-federation' into 'develop'
Embedded object federation
Closes #1959
See merge request pleroma/pleroma!2794
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/object_validator.ex | 7 | ||||
-rw-r--r-- | lib/pleroma/web/activity_pub/pipeline.ex | 7 |
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/object_validator.ex b/lib/pleroma/web/activity_pub/object_validator.ex index df926829c..0dcc7be4d 100644 --- a/lib/pleroma/web/activity_pub/object_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validator.ex @@ -9,6 +9,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do the system. """ + alias Pleroma.Activity alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Object alias Pleroma.User @@ -71,6 +72,12 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do |> UndoValidator.cast_and_validate() |> Ecto.Changeset.apply_action(:insert) do object = stringify_keys(object) + undone_object = Activity.get_by_ap_id(object["object"]) + + meta = + meta + |> Keyword.put(:object_data, undone_object.data) + {:ok, object, meta} end end diff --git a/lib/pleroma/web/activity_pub/pipeline.ex b/lib/pleroma/web/activity_pub/pipeline.ex index 6875c47f6..36e325c37 100644 --- a/lib/pleroma/web/activity_pub/pipeline.ex +++ b/lib/pleroma/web/activity_pub/pipeline.ex @@ -52,6 +52,13 @@ defmodule Pleroma.Web.ActivityPub.Pipeline do do_not_federate = meta[:do_not_federate] || !Config.get([:instance, :federating]) if !do_not_federate && local do + activity = + if object = Keyword.get(meta, :object_data) do + %{activity | data: Map.put(activity.data, "object", object)} + else + activity + end + Federator.publish(activity) {:ok, :federated} else |