alias Pleroma.Web.ActivityPub.Transmogrifier
alias Pleroma.Web.ActivityPub.Utils
+ def cast_recipients(message, field, field_fallback \\ []) do
+ {:ok, data} = ObjectValidators.Recipients.cast(message[field] || field_fallback)
+
+ Map.put(message, field, data)
+ end
+
def fix_object_defaults(data) do
%{data: %{"id" => context}, id: context_id} =
Utils.create_context(data["context"] || data["conversation"])
%User{follower_address: follower_collection} = User.get_cached_by_ap_id(data["attributedTo"])
- {:ok, to} = ObjectValidators.Recipients.cast(data["to"] || [])
- {:ok, cc} = ObjectValidators.Recipients.cast(data["cc"] || [])
data
|> Map.put("context", context)
|> Map.put("context_id", context_id)
- |> Map.put("to", to)
- |> Map.put("cc", cc)
+ |> cast_recipients("to")
+ |> cast_recipients("cc")
+ |> cast_recipients("bto")
+ |> cast_recipients("bcc")
|> Transmogrifier.fix_explicit_addressing(follower_collection)
|> Transmogrifier.fix_implicit_addressing(follower_collection)
end
- defp fix_activity_recipients(activity, field, object) do
- {:ok, data} = ObjectValidators.Recipients.cast(activity[field] || object[field])
-
- Map.put(activity, field, data)
- end
-
- def fix_activity_defaults(activity, meta) do
- object = meta[:object_data] || %{}
+ def fix_activity_addressing(activity, _meta) do
+ %User{follower_address: follower_collection} = User.get_cached_by_ap_id(activity["actor"])
activity
- |> fix_activity_recipients("to", object)
- |> fix_activity_recipients("cc", object)
- |> fix_activity_recipients("bto", object)
- |> fix_activity_recipients("bcc", object)
+ |> cast_recipients("to")
+ |> cast_recipients("cc")
+ |> cast_recipients("bto")
+ |> cast_recipients("bcc")
+ |> Transmogrifier.fix_explicit_addressing(follower_collection)
+ |> Transmogrifier.fix_implicit_addressing(follower_collection)
end
def fix_actor(data) do