mirror of
https://code.eliotberriot.com/funkwhale/funkwhale.git
synced 2025-10-05 03:39:25 +02:00
Added remote library scanning logic end endpoint
This commit is contained in:
parent
836e813955
commit
097707dec4
8 changed files with 243 additions and 6 deletions
|
@ -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()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue