Newer
Older
from rest_framework import serializers
async def lookup(name, session):
username, domain = name.split("@")
response = await session.get(
"https://{}/.well-known/webfinger".format(domain),
params={"resource": "acct:{}".format(name)},
)
response.raise_for_status()
return await response.json()
class AccountLinkSerializer(serializers.Serializer):
rel = serializers.CharField()
href = serializers.URLField()
type = serializers.CharField()
class WebfingerSerializer(serializers.Serializer):
links = serializers.ListField(child=AccountLinkSerializer(), min_length=1)
def get_links(payload):
serializer = WebfingerSerializer(data=payload)
serializer.is_valid(raise_exception=True)
links = {}
for link in serializer.validated_data["links"]:
if link["rel"] != "self":
continue
if link["type"] == "application/activity+json":
links["activitypub"] = link["href"]
return links