Pipeline: Unify embedded_object / object_data, move to validator.
authorlain <lain@soykaf.club>
Mon, 27 Jul 2020 14:39:50 +0000 (16:39 +0200)
committerlain <lain@soykaf.club>
Mon, 27 Jul 2020 14:39:50 +0000 (16:39 +0200)
lib/pleroma/web/activity_pub/object_validator.ex
lib/pleroma/web/activity_pub/pipeline.ex
lib/pleroma/web/activity_pub/side_effects.ex
test/web/activity_pub/pipeline_test.exs
test/web/activity_pub/side_effects_test.exs

index df926829c4eb42d36201df45f2c2dc13e7bfe6b5..0dcc7be4dbd778a1eebace51c8848e4f86cb76cd 100644 (file)
@@ -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
index 50d9016e6099e1086cfff1a22c1f4a9b1532ef63..36e325c373d1463c9ac21f7a51913bf440201617 100644 (file)
@@ -53,7 +53,7 @@ defmodule Pleroma.Web.ActivityPub.Pipeline do
 
       if !do_not_federate && local do
         activity =
-          if object = Keyword.get(meta, :embedded_object) do
+          if object = Keyword.get(meta, :object_data) do
             %{activity | data: Map.put(activity.data, "object", object)}
           else
             activity
index 33bee1576857536c19dd218b352c975a22347b0f..1d2c296a5c001a99d02c8ae72256d61029aa1dd4 100644 (file)
@@ -174,10 +174,6 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do
   def handle(%{data: %{"type" => "Undo", "object" => undone_object}} = object, meta) do
     with undone_object <- Activity.get_by_ap_id(undone_object),
          :ok <- handle_undoing(undone_object) do
-      meta =
-        meta
-        |> Keyword.put(:embedded_object, undone_object.data)
-
       {:ok, object, meta}
     end
   end
index 202b5fe61a3926fc330469a690eacc5e49eac6ac..f2a231eaf1780e86d9433ccbc846f06eb5ee637f 100644 (file)
@@ -14,10 +14,10 @@ defmodule Pleroma.Web.ActivityPub.PipelineTest do
       :ok
     end
 
-    test "when given an `embedded_object` in meta, Federation will receive a the original activity with the `object` field set to this embedded object" do
+    test "when given an `object_data` in meta, Federation will receive a the original activity with the `object` field set to this embedded object" do
       activity = insert(:note_activity)
       object = %{"id" => "1", "type" => "Love"}
-      meta = [local: true, embedded_object: object]
+      meta = [local: true, object_data: object]
 
       activity_with_object = %{activity | data: Map.put(activity.data, "object", object)}
 
index d48c235c03b790d3207332c14314e32376148619..4a08eb7ee4c36329423e201b7794db9b242e126d 100644 (file)
@@ -312,13 +312,12 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do
       }
     end
 
-    test "deletes the original block, but sets `embedded_object`", %{
+    test "deletes the original block", %{
       block_undo: block_undo,
       block: block
     } do
-      {:ok, _block_undo, meta} = SideEffects.handle(block_undo)
+      {:ok, _block_undo, _meta} = SideEffects.handle(block_undo)
 
-      assert meta[:embedded_object] == block.data
       refute Activity.get_by_id(block.id)
     end