X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Factivity_pub%2Factivity_pub.ex;h=9441a37aba9b263b51a88176ff64590391fe00b7;hb=009fcd2acfdc3ae3ba4b706eb71c50015227de50;hp=0d3360ee187c4773909748e76aef552eef050d1c;hpb=4f7adb343c66dba0a3c6883cd9f4156fb43594d4;p=akkoma diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 0d3360ee1..9441a37ab 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -19,6 +19,28 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do Repo.insert(%Activity{data: map}) end + def create(to, actor, context, object, additional \\ %{}, published \\ nil) do + published = published || make_date() + + activity = %{ + "type" => "Create", + "to" => to, + "actor" => actor.ap_id, + "object" => object, + "published" => published, + "context" => context + } + |> Map.merge(additional) + + with {:ok, activity} <- insert(activity) do + if actor.local do + Pleroma.Web.Federator.enqueue(:publish, activity) + end + + {:ok, activity} + end + end + def like(%User{ap_id: ap_id} = user, %Object{data: %{ "id" => id}} = object) do cond do # There's already a like here, so return the original activity. @@ -133,6 +155,13 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do query end + query = if opts["actor_id"] do + from activity in query, + where: fragment("? @> ?", activity.data, ^%{actor: opts["actor_id"]}) + else + query + end + Repo.all(query) |> Enum.reverse end @@ -167,7 +196,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do Repo.all(query) end - def upload(%Plug.Upload{} = file) do + def upload(file) do data = Upload.store(file) Repo.insert(%Object{data: data}) end