diff --git a/retribute_api/search/sources.py b/retribute_api/search/sources.py index 80159ad45f817b3e11405cd233cac66621bf2748..7e01bbebf904e797aa3cf2cccd40f1b6fe9171a0 100644 --- a/retribute_api/search/sources.py +++ b/retribute_api/search/sources.py @@ -1,5 +1,6 @@ from django.conf import settings from django.utils import timezone +import json from .. import providers from . import activitypub @@ -38,6 +39,7 @@ class Activitypub(Source): ] async def get(self, lookup, session, cache): + try: actor_data = await cache.get("activitypub:profile:{}".format(lookup)) except cache.NotFound: @@ -45,7 +47,8 @@ class Activitypub(Source): lookup, headers={"Accept": "application/activity+json"} ) as response: response.raise_for_status() - actor_data = await response.json() + text = await response.read() + actor_data = json.loads(text) await cache.set("activitypub:profile:{}".format(lookup), actor_data) serializer = activitypub.ActorSerializer(data=actor_data) serializer.is_valid(raise_exception=True) @@ -55,7 +58,7 @@ class Activitypub(Source): data = { "links": activitypub.extract_urls_from_attachments( - serializer.validated_data["attachment"] + serializer.validated_data.get("attachment", []) ) + activitypub.extract_urls_from_summary( serializer.validated_data["summary"] diff --git a/retribute_api/search/webfinger.py b/retribute_api/search/webfinger.py index c89a7be71321ee06ca116d2851b4a43221651b60..a3f1534aa5a62535291935e038181d723212a41d 100644 --- a/retribute_api/search/webfinger.py +++ b/retribute_api/search/webfinger.py @@ -1,3 +1,5 @@ +import json + from rest_framework import serializers from . import exceptions @@ -19,7 +21,8 @@ async def lookup(name, session, cache): params={"resource": "acct:{}".format(name)}, ) as response: response.raise_for_status() - payload = await response.json() + text = await response.read() + payload = json.loads(text) await cache.set("webfinger:links:{}".format(name), payload) return payload