2022-02-25 23:11:42 -07:00
|
|
|
# Pleroma: A lightweight social networking server
|
2023-01-02 13:38:50 -07:00
|
|
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
2022-02-25 23:11:42 -07:00
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
2017-03-21 10:53:20 -06:00
|
|
|
defmodule Pleroma.Builders.ActivityBuilder do
|
|
|
|
alias Pleroma.Web.ActivityPub.ActivityPub
|
|
|
|
|
2017-03-21 13:22:05 -06:00
|
|
|
def build(data \\ %{}, opts \\ %{}) do
|
2017-04-16 07:28:28 -06:00
|
|
|
user = opts[:user] || Pleroma.Factory.insert(:user)
|
2018-03-30 07:01:53 -06:00
|
|
|
|
2017-03-21 13:22:05 -06:00
|
|
|
activity = %{
|
2018-03-30 07:01:53 -06:00
|
|
|
"id" => Pleroma.Web.ActivityPub.Utils.generate_object_id(),
|
2017-03-21 10:53:20 -06:00
|
|
|
"actor" => user.ap_id,
|
|
|
|
"to" => ["https://www.w3.org/ns/activitystreams#Public"],
|
2018-02-25 09:48:31 -07:00
|
|
|
"type" => "Create",
|
2017-03-21 10:53:20 -06:00
|
|
|
"object" => %{
|
|
|
|
"type" => "Note",
|
2018-02-25 09:48:31 -07:00
|
|
|
"content" => "test",
|
2018-03-30 07:01:53 -06:00
|
|
|
"to" => ["https://www.w3.org/ns/activitystreams#Public"]
|
2017-03-21 10:53:20 -06:00
|
|
|
}
|
|
|
|
}
|
2018-03-30 07:01:53 -06:00
|
|
|
|
2017-03-21 13:22:05 -06:00
|
|
|
Map.merge(activity, data)
|
|
|
|
end
|
2017-03-21 10:53:20 -06:00
|
|
|
|
2017-03-21 13:22:05 -06:00
|
|
|
def insert(data \\ %{}, opts \\ %{}) do
|
|
|
|
activity = build(data, opts)
|
2020-05-07 03:13:32 -06:00
|
|
|
|
|
|
|
case ActivityPub.insert(activity) do
|
|
|
|
ok = {:ok, activity} ->
|
|
|
|
ActivityPub.notify_and_stream(activity)
|
|
|
|
ok
|
|
|
|
|
|
|
|
error ->
|
|
|
|
error
|
|
|
|
end
|
2017-03-21 13:22:05 -06:00
|
|
|
end
|
|
|
|
|
|
|
|
def insert_list(times, data \\ %{}, opts \\ %{}) do
|
2018-05-04 14:59:01 -06:00
|
|
|
Enum.map(1..times, fn _n ->
|
2018-02-25 09:48:31 -07:00
|
|
|
{:ok, activity} = insert(data, opts)
|
2017-03-21 13:22:05 -06:00
|
|
|
activity
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
|
|
|
|
def public_and_non_public do
|
2017-04-16 07:28:28 -06:00
|
|
|
user = Pleroma.Factory.insert(:user)
|
2017-03-21 13:22:05 -06:00
|
|
|
|
|
|
|
public = build(%{"id" => 1}, %{user: user})
|
2018-02-25 09:48:31 -07:00
|
|
|
non_public = build(%{"id" => 2, "to" => [user.follower_address]}, %{user: user})
|
2017-03-21 10:53:20 -06:00
|
|
|
|
|
|
|
{:ok, public} = ActivityPub.insert(public)
|
|
|
|
{:ok, non_public} = ActivityPub.insert(non_public)
|
|
|
|
|
|
|
|
%{
|
|
|
|
public: public,
|
|
|
|
non_public: non_public,
|
|
|
|
user: user
|
|
|
|
}
|
|
|
|
end
|
|
|
|
end
|