summaryrefslogtreecommitdiffstats
path: root/users/tasks/follow.py
diff options
context:
space:
mode:
Diffstat (limited to 'users/tasks/follow.py')
-rw-r--r--users/tasks/follow.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/users/tasks/follow.py b/users/tasks/follow.py
new file mode 100644
index 0000000..3260124
--- /dev/null
+++ b/users/tasks/follow.py
@@ -0,0 +1,28 @@
+from core.ld import canonicalise
+from core.signatures import HttpSignature
+from users.models import Follow
+
+
+async def handle_follow_request(task_handler):
+ """
+ Request a follow from a remote server
+ """
+ follow = await Follow.objects.select_related(
+ "source", "source__domain", "target"
+ ).aget(pk=task_handler.subject)
+ # Construct the request
+ request = canonicalise(
+ {
+ "@context": "https://www.w3.org/ns/activitystreams",
+ "id": follow.uri,
+ "type": "Follow",
+ "actor": follow.source.actor_uri,
+ "object": follow.target.actor_uri,
+ }
+ )
+ # Sign it and send it
+ response = await HttpSignature.signed_request(
+ follow.target.inbox_uri, request, follow.source
+ )
+ print(response)
+ print(response.content)