Skip to content

Commit f30a37f

Browse files
committed
Use proper inbox url for remote actor
Signed-off-by: Keshav Priyadarshi <git@keshav.space>
1 parent 4bb3c34 commit f30a37f

File tree

3 files changed

+15
-14
lines changed

3 files changed

+15
-14
lines changed

fedcode/models.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#
99

1010
import uuid
11+
from urllib.parse import urljoin
1112

1213
from django.contrib.auth.models import User
1314
from django.contrib.contenttypes.fields import GenericForeignKey
@@ -424,11 +425,13 @@ def absolute_url_ap(self):
424425
@property
425426
def inbox_url(self):
426427
if not self.local:
427-
return self.remote_actor.url
428+
return urljoin(self.remote_actor.url, "inbox")
428429
return full_reverse("user-inbox", self.user.username)
429430

430431
@property
431432
def outbox_url(self):
433+
if not self.local:
434+
return urljoin(self.remote_actor.url, "outbox")
432435
return full_reverse("user-outbox", self.user.username)
433436

434437
@property
@@ -444,10 +447,11 @@ def key_id(self):
444447

445448
@property
446449
def to_ap(self):
450+
name = self.user.username if self.local else self.remote_actor.username
447451
return {
448452
"id": self.absolute_url_ap,
449453
"type": "Person",
450-
"name": self.user.username,
454+
"name": name,
451455
"summary": self.summary,
452456
"inbox": self.inbox_url,
453457
"outbox": self.outbox_url,

fedcode/views.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -698,22 +698,19 @@ def post(self, request, *args, **kwargs):
698698
return HttpResponseBadRequest("Invalid message")
699699

700700

701-
@method_decorator(has_valid_header, name="dispatch")
702701
class RemoteUserSubscribe(View):
703702
def get(self, request, *args, **kwargs):
704-
"""Endpoint to for existing remote user to subscribe to package."""
703+
"""Endpoint for existing remote user to subscribe to package."""
705704
purl = request.GET.get("purl").rstrip("/")
706705
package = get_object_or_404(Package, purl=purl)
707706
remote_actor = get_object_or_404(RemoteActor, username=kwargs["username"])
708-
host = request.get_host()
709-
if urlparse(remote_actor.url).netloc == host:
710-
_, created = Follow.objects.get_or_create(package=package, person=remote_actor.person)
711-
message = f"Already subscribed package {purl}"
712-
if created:
713-
message = f"Successfully subscribed package {purl}"
714-
715-
return JsonResponse({"status": "success", "message": message})
716-
return HttpResponseBadRequest()
707+
708+
_, created = Follow.objects.get_or_create(package=package, person=remote_actor.person)
709+
message = f"Already subscribed to package {purl}"
710+
if created:
711+
message = f"Successfully subscribed to package {purl}"
712+
713+
return JsonResponse({"status": "success", "message": message})
717714

718715

719716
@method_decorator(has_valid_header, name="dispatch")

federatedcode/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@
9494
path("api/v0/users/@<str:username>/outbox", UserOutbox.as_view(), name="user-outbox"),
9595
path("api/v0/purls/@<path:purl_string>/inbox", PackageInbox.as_view(), name="purl-inbox"),
9696
path(
97-
"api/v0/users/@<str:username>/subscribe",
97+
"api/v0/users/@<str:username>/subscribe/",
9898
RemoteUserSubscribe.as_view(),
9999
name="purl-subscribe",
100100
),

0 commit comments

Comments
 (0)