Added remote library scanning logic end endpoint

This commit is contained in:
Eliot Berriot 2018-04-08 13:35:37 +02:00
parent 836e813955
commit 097707dec4
No known key found for this signature in database
GPG key ID: DD6965E2476E5C27
8 changed files with 243 additions and 6 deletions

View file

@ -27,8 +27,10 @@ class ActorSerializer(serializers.ModelSerializer):
id = serializers.URLField(source='url')
outbox = serializers.URLField(source='outbox_url')
inbox = serializers.URLField(source='inbox_url')
following = serializers.URLField(source='following_url', required=False)
followers = serializers.URLField(source='followers_url', required=False)
following = serializers.URLField(
source='following_url', required=False, allow_null=True)
followers = serializers.URLField(
source='followers_url', required=False, allow_null=True)
preferredUsername = serializers.CharField(
source='preferred_username', required=False)
publicKey = serializers.JSONField(source='public_key', required=False)
@ -94,6 +96,31 @@ class ActorSerializer(serializers.ModelSerializer):
return value[:500]
class LibraryActorSerializer(ActorSerializer):
url = serializers.ListField(
child=serializers.JSONField())
class Meta(ActorSerializer.Meta):
fields = ActorSerializer.Meta.fields + ['url']
def validate(self, validated_data):
try:
urls = validated_data['url']
except KeyError:
raise serializers.ValidationError('Missing URL field')
for u in urls:
try:
if u['name'] != 'library':
continue
validated_data['library_url'] = u['href']
break
except KeyError:
continue
return validated_data
class FollowSerializer(serializers.ModelSerializer):
# left maps to activitypub fields, right to our internal models
id = serializers.URLField(source='get_federation_url')
@ -226,7 +253,6 @@ OBJECT_SERIALIZERS = {
class PaginatedCollectionSerializer(serializers.Serializer):
type = serializers.ChoiceField(choices=['Collection'])
totalItems = serializers.IntegerField(min_value=0)
items = serializers.ListField()
actor = serializers.URLField()
id = serializers.URLField()