From 61c324508e62bb640b4526183d0837fc57d742c2 Mon Sep 17 00:00:00 2001 From: Andrew Godwin Date: Tue, 8 Nov 2022 23:06:29 -0700 Subject: Midway point in task refactor - changing direction --- users/tasks/follow.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'users/tasks/follow.py') diff --git a/users/tasks/follow.py b/users/tasks/follow.py index 872b35f..0f802cf 100644 --- a/users/tasks/follow.py +++ b/users/tasks/follow.py @@ -27,3 +27,36 @@ async def handle_follow_request(task_handler): if response.status_code >= 400: raise ValueError(f"Request error: {response.status_code} {response.content}") await Follow.objects.filter(pk=follow.pk).aupdate(requested=True) + + +def send_follow_undo(id): + """ + Request a follow from a remote server + """ + follow = Follow.objects.select_related("source", "source__domain", "target").get( + pk=id + ) + # Construct the request + request = canonicalise( + { + "@context": "https://www.w3.org/ns/activitystreams", + "id": follow.uri + "#undo", + "type": "Undo", + "actor": follow.source.actor_uri, + "object": { + "id": follow.uri, + "type": "Follow", + "actor": follow.source.actor_uri, + "object": follow.target.actor_uri, + }, + } + ) + # Sign it and send it + from asgiref.sync import async_to_sync + + response = async_to_sync(HttpSignature.signed_request)( + follow.target.inbox_uri, request, follow.source + ) + if response.status_code >= 400: + raise ValueError(f"Request error: {response.status_code} {response.content}") + print(response) -- cgit v1.2.3