forked from AkkomaGang/akkoma
Transmogrifier: Use new ingestion pipeline for Likes.
This commit is contained in:
parent
6e4f52f8a2
commit
081e8206ab
3 changed files with 40 additions and 8 deletions
|
@ -32,6 +32,18 @@ defmodule Pleroma.Object.Containment do
|
||||||
get_actor(%{"actor" => actor})
|
get_actor(%{"actor" => actor})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_object(%{"object" => id}) when is_binary(id) do
|
||||||
|
id
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_object(%{"object" => %{"id" => id}}) when is_binary(id) do
|
||||||
|
id
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_object(_) do
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Checks that an imported AP object's actor matches the domain it came from.
|
Checks that an imported AP object's actor matches the domain it came from.
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -43,7 +43,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do
|
||||||
|
|
||||||
def validate(%{"type" => "Like"} = object, meta) do
|
def validate(%{"type" => "Like"} = object, meta) do
|
||||||
with {:ok, object, meta} <- common_validations(object, meta),
|
with {:ok, object, meta} <- common_validations(object, meta),
|
||||||
{_, %Object{} = liked_object} <- {:find_liked_object, Object.normalize(object["object"])},
|
{_, %Object{} = liked_object} <-
|
||||||
|
{:find_liked_object, Object.normalize(object["object"])},
|
||||||
{_, nil} <- {:existing_like, Utils.get_existing_like(object["actor"], liked_object)} do
|
{_, nil} <- {:existing_like, Utils.get_existing_like(object["actor"], liked_object)} do
|
||||||
{:ok, object, meta}
|
{:ok, object, meta}
|
||||||
else
|
else
|
||||||
|
|
|
@ -563,19 +563,38 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_incoming(
|
def handle_incoming(
|
||||||
%{"type" => "Like", "object" => object_id, "actor" => _actor, "id" => id} = data,
|
%{"type" => "Like", "object" => _object_id, "actor" => _actor, "id" => _id} = data,
|
||||||
_options
|
_options
|
||||||
) do
|
) do
|
||||||
with actor <- Containment.get_actor(data),
|
with data <- Map.take(data, ["type", "object", "actor", "context", "id"]),
|
||||||
{:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(actor),
|
actor <- Containment.get_actor(data),
|
||||||
{:ok, object} <- get_obj_helper(object_id),
|
object <- Containment.get_object(data),
|
||||||
{:ok, activity, _object} <- ActivityPub.like(actor, object, id, false) do
|
data <- data |> Map.put("actor", actor) |> Map.put("object", object),
|
||||||
|
_user <- User.get_or_fetch_by_ap_id(actor),
|
||||||
|
object <- Object.normalize(object),
|
||||||
|
data <- Map.put_new(data, "context", object.data["context"]),
|
||||||
|
{_, {:ok, activity, _meta}} <-
|
||||||
|
{:common_pipeline, ActivityPub.common_pipeline(data, local: false)} do
|
||||||
{:ok, activity}
|
{:ok, activity}
|
||||||
else
|
else
|
||||||
_e -> :error
|
e -> {:error, e}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# def handle_incoming(
|
||||||
|
# %{"type" => "Like", "object" => object_id, "actor" => _actor, "id" => id} = data,
|
||||||
|
# _options
|
||||||
|
# ) do
|
||||||
|
# with actor <- Containment.get_actor(data),
|
||||||
|
# {:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(actor),
|
||||||
|
# {:ok, object} <- get_obj_helper(object_id),
|
||||||
|
# {:ok, activity, _object} <- ActivityPub.like(actor, object, id, false) do
|
||||||
|
# {:ok, activity}
|
||||||
|
# else
|
||||||
|
# _e -> :error
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
|
||||||
def handle_incoming(
|
def handle_incoming(
|
||||||
%{"type" => "Announce", "object" => object_id, "actor" => _actor, "id" => id} = data,
|
%{"type" => "Announce", "object" => object_id, "actor" => _actor, "id" => id} = data,
|
||||||
_options
|
_options
|
||||||
|
|
Loading…
Reference in a new issue