ActivityPub: Refactor create function.
authorlain <lain@soykaf.club>
Thu, 15 Feb 2018 18:59:03 +0000 (19:59 +0100)
committerlain <lain@soykaf.club>
Thu, 15 Feb 2018 18:59:35 +0000 (19:59 +0100)
lib/pleroma/web/activity_pub/activity_pub.ex
lib/pleroma/web/common_api/common_api.ex
lib/pleroma/web/ostatus/handlers/note_handler.ex
test/web/activity_pub/activity_pub_test.exs

index 6e29768d14d8090286d9cccc24cdadab2de337e5..a7b2988b9afe506c352e107c304c852e8a06e836 100644 (file)
@@ -1,6 +1,5 @@
 defmodule Pleroma.Web.ActivityPub.ActivityPub do
   alias Pleroma.{Activity, Repo, Object, Upload, User, Notification}
-  alias Pleroma.Web.OStatus
   import Ecto.Query
   import Pleroma.Web.ActivityPub.Utils
   require Logger
@@ -37,7 +36,11 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
     end
   end
 
-  def create(to, actor, context, object, additional \\ %{}, published \\ nil, local \\ true) do
+  def create(%{to: to, actor: actor, context: context, object: object} = params) do
+    additional = params[:additional] || %{}
+    local = !(params[:local] == false) # only accept false as false value
+    published = params[:published]
+
     with create_data <- make_create_data(%{to: to, actor: actor, published: published, context: context, object: object}, additional),
          {:ok, activity} <- insert(create_data, local),
          :ok <- maybe_federate(activity) do
@@ -247,18 +250,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
     |> Map.put("@context", "https://www.w3.org/ns/activitystreams")
   end
 
-  def prepare_incoming(%{"type" => "Create", "object" => %{"type" => "Note"} = object} = data) do
-    with {:ok, user} <- OStatus.find_or_make_user(data["actor"]) do
-      {:ok, data}
-    else
-      _e -> :error
-    end
-  end
-
-  def prepare_incoming(_) do
-    :error
-  end
-
   def publish(actor, activity) do
     remote_users = Pleroma.Web.Salmon.remote_users(activity)
     data = sanitize_outgoing_activity_data(activity.data)
index d3a9f7b8500631f555864a1d4e23e67058e4dbb6..f3060bd89de9aa53c5284adf74a55c70dc31564e 100644 (file)
@@ -61,7 +61,7 @@ defmodule Pleroma.Web.CommonAPI do
          cw <- data["spoiler_text"],
          object <- make_note_data(user.ap_id, to, context, content_html, attachments, inReplyTo, tags, cw),
          object <- Map.put(object, "emoji", Formatter.get_emoji(status) |> Enum.reduce(%{}, fn({name, file}, acc) -> Map.put(acc, name, "#{Pleroma.Web.Endpoint.static_url}#{file}") end)) do
-      res = ActivityPub.create(to, user, context, object)
+      res = ActivityPub.create(%{to: to, actor: user, context: context, object: object})
       User.increase_note_count(user)
       res
     end
index 8747dbb676efabcf69b201ce1eb8e535a5197fa3..7b7ed2d5a4a09078b1dd5761849867deefd918e7 100644 (file)
@@ -112,7 +112,7 @@ defmodule Pleroma.Web.OStatus.NoteHandler do
          # TODO: Handle this case in make_note_data
          note <- (if inReplyTo && !inReplyToActivity, do: note |> Map.put("inReplyTo", inReplyTo), else: note)
       do
-      res = ActivityPub.create(to, actor, context, note, %{}, date, false)
+      res = ActivityPub.create(%{to: to, actor: actor, context: context, object: note, published: date, local: false})
       User.increase_note_count(actor)
       res
     else
index 01e5362ec8667678b2ddadfe74e515da5ea9b396..4817a9f38d7535b1ec1a117a73050ad7764a1115 100644 (file)
@@ -62,7 +62,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
 
   describe "create activities" do
     test "removes doubled 'to' recipients" do
-      {:ok, activity} = ActivityPub.create(["user1", "user1", "user2"], %User{ap_id: "1"}, "", %{})
+      {:ok, activity} = ActivityPub.create(%{to: ["user1", "user1", "user2"], actor: %User{ap_id: "1"}, context: "", object: %{}})
       assert activity.data["to"] == ["user1", "user2"]
       assert activity.actor == "1"
       assert activity.recipients == ["user1", "user2"]