aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2018-08-06 07:14:16 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2018-08-06 08:22:12 +0000
commit99be3d3dccbbd7877192c6291bbaae92f66e06bf (patch)
treefbc9ece499ca09484e89d76715c7447a614bd064 /lib/pleroma
parent1c90f88393c10198f34aa3a19f09169bcddeeac3 (diff)
downloadpleroma-99be3d3dccbbd7877192c6291bbaae92f66e06bf.tar.gz
relay: add relay follow/unfollow tasks
Diffstat (limited to 'lib/pleroma')
-rw-r--r--lib/pleroma/web/activity_pub/relay.ex28
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/relay.ex b/lib/pleroma/web/activity_pub/relay.ex
index 736d0e406..8b49188fb 100644
--- a/lib/pleroma/web/activity_pub/relay.ex
+++ b/lib/pleroma/web/activity_pub/relay.ex
@@ -1,7 +1,35 @@
defmodule Pleroma.Web.ActivityPub.Relay do
alias Pleroma.User
+ alias Pleroma.Web.ActivityPub.ActivityPub
+ require Logger
def get_actor do
User.get_or_create_instance_user()
end
+
+ def follow(target_instance) do
+ with %User{} = local_user <- get_actor(),
+ %User{} = target_user <- User.get_or_fetch_by_ap_id(target_instance),
+ {:ok, activity} <- ActivityPub.follow(local_user, target_user) do
+ ActivityPub.publish(local_user, activity)
+ Logger.info("relay: followed instance: #{target_instance}; id=#{activity.data["id"]}")
+ else
+ e -> Logger.error("error: #{inspect(e)}")
+ end
+
+ :ok
+ end
+
+ def unfollow(target_instance) do
+ with %User{} = local_user <- get_actor(),
+ %User{} = target_user <- User.get_or_fetch_by_ap_id(target_instance),
+ {:ok, activity} <- ActivityPub.unfollow(local_user, target_user) do
+ ActivityPub.publish(local_user, activity)
+ Logger.info("relay: unfollowed instance: #{target_instance}: id=#{activity.data["id"]}")
+ else
+ e -> Logger.error("error: #{inspect(e)}")
+ end
+
+ :ok
+ end
end