Skip to content
Snippets Groups Projects
actors.py 1.57 KiB
Newer Older
  • Learn to ignore specific revisions
  • import requests
    
    from django.urls import reverse
    from django.conf import settings
    
    from dynamic_preferences.registries import global_preferences_registry
    
    from . import models
    
    Eliot Berriot's avatar
    Eliot Berriot committed
    from . import utils
    
    
    
    def get_actor_data(actor_url):
        response = requests.get(actor_url)
        response.raise_for_status()
        return response.json()
    
    
    SYSTEM_ACTORS = {
        'library': {
            'get_actor': lambda: models.Actor(**get_base_system_actor_arguments('library')),
        }
    }
    
    
    def get_base_system_actor_arguments(name):
        preferences = global_preferences_registry.manager()
        return {
            'preferred_username': name,
            'domain': settings.FEDERATION_HOSTNAME,
            'type': 'Person',
            'name': '{}\'s library'.format(settings.FEDERATION_HOSTNAME),
            'manually_approves_followers': True,
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            'url': utils.full_url(
                reverse(
                    'federation:instance-actors-detail',
                    kwargs={'actor': name})),
            'shared_inbox_url': utils.full_url(
                reverse(
                    'federation:instance-actors-inbox',
                    kwargs={'actor': name})),
            'inbox_url': utils.full_url(
                reverse(
                    'federation:instance-actors-inbox',
                    kwargs={'actor': name})),
            'outbox_url': utils.full_url(
                reverse(
                    'federation:instance-actors-outbox',
                    kwargs={'actor': name})),
    
            'public_key': preferences['federation__public_key'],
            'summary': 'Bot account to federate with {}\'s library'.format(
                settings.FEDERATION_HOSTNAME
            ),
        }