64 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Plugin\ActivityStreamsTwo;
 | 
						|
 | 
						|
use App\Core\Event;
 | 
						|
use App\Core\Modules\Plugin;
 | 
						|
use Exception;
 | 
						|
use Plugin\ActivityStreamsTwo\Util\Response\ActorResponse;
 | 
						|
use Plugin\ActivityStreamsTwo\Util\Response\NoteResponse;
 | 
						|
use Plugin\ActivityStreamsTwo\Util\Response\TypeResponse;
 | 
						|
 | 
						|
class ActivityStreamsTwo extends Plugin
 | 
						|
{
 | 
						|
    public function version(): string
 | 
						|
    {
 | 
						|
        return '0.1.0';
 | 
						|
    }
 | 
						|
 | 
						|
    public static array $accept_headers = [
 | 
						|
        'application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
 | 
						|
        'application/activity+json',
 | 
						|
        'application/json',
 | 
						|
        'application/ld+json',
 | 
						|
    ];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param string            $route
 | 
						|
     * @param array             $accept_header
 | 
						|
     * @param array             $vars
 | 
						|
     * @param null|TypeResponse $response
 | 
						|
     *
 | 
						|
     *@throws Exception
 | 
						|
     *
 | 
						|
     * @return bool
 | 
						|
     *
 | 
						|
     */
 | 
						|
    public function onControllerResponseInFormat(string $route, array $accept_header, array $vars, ?TypeResponse &$response = null): bool
 | 
						|
    {
 | 
						|
        if (count(array_intersect(self::$accept_headers, $accept_header)) === 0) {
 | 
						|
            return Event::next;
 | 
						|
        }
 | 
						|
        switch ($route) {
 | 
						|
            case 'actor_view_id':
 | 
						|
            case 'actor_view_nickname':
 | 
						|
                $response = ActorResponse::handle($vars['actor']);
 | 
						|
                return Event::stop;
 | 
						|
            case 'note_view':
 | 
						|
                $response = NoteResponse::handle($vars['note']);
 | 
						|
                return Event::stop;
 | 
						|
            case 'actor_favourites':
 | 
						|
                $response = LikeResponse::handle($vars['actor']);
 | 
						|
                return Event::stop;
 | 
						|
            case 'actor_subscriptions':
 | 
						|
                $response = FollowingResponse::handle($vars['actor']);
 | 
						|
                return Event::stop;
 | 
						|
            case 'actor_subscribers':
 | 
						|
                $response = FollowersResponse::handle($vars['actor']);
 | 
						|
                return Event::stop;
 | 
						|
            default:
 | 
						|
                return Event::next;
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |