| 
									
										
										
										
											2021-08-24 20:29:26 +01:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Plugin\ActivityStreamsTwo; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use App\Core\Event; | 
					
						
							|  |  |  | use App\Core\Modules\Plugin; | 
					
						
							| 
									
										
										
										
											2021-09-14 17:15:37 +01:00
										 |  |  | use Exception; | 
					
						
							|  |  |  | use Plugin\ActivityStreamsTwo\Util\Response\ActorResponse; | 
					
						
							| 
									
										
										
										
											2021-08-24 20:29:26 +01:00
										 |  |  | use Plugin\ActivityStreamsTwo\Util\Response\NoteResponse; | 
					
						
							|  |  |  | use Plugin\ActivityStreamsTwo\Util\Response\TypeResponse; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ActivityStreamsTwo extends Plugin | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     public function version(): string | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return '0.1.0'; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-14 17:15:37 +01:00
										 |  |  |     public static array $accept_headers = [ | 
					
						
							| 
									
										
										
										
											2021-08-24 20:29:26 +01:00
										 |  |  |         'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', | 
					
						
							|  |  |  |         'application/activity+json', | 
					
						
							|  |  |  |         'application/json', | 
					
						
							|  |  |  |         'application/ld+json', | 
					
						
							|  |  |  |     ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @param string            $route | 
					
						
							| 
									
										
										
										
											2021-09-14 17:15:37 +01:00
										 |  |  |      * @param array             $accept_header | 
					
						
							| 
									
										
										
										
											2021-08-24 20:29:26 +01:00
										 |  |  |      * @param array             $vars | 
					
						
							|  |  |  |      * @param null|TypeResponse $response | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2021-09-14 17:15:37 +01:00
										 |  |  |      *@throws Exception | 
					
						
							| 
									
										
										
										
											2021-08-24 20:29:26 +01:00
										 |  |  |      * | 
					
						
							|  |  |  |      * @return bool | 
					
						
							| 
									
										
										
										
											2021-09-14 17:15:37 +01:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2021-08-24 20:29:26 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2021-09-14 17:15:37 +01:00
										 |  |  |     public function onControllerResponseInFormat(string $route, array $accept_header, array $vars, ?TypeResponse &$response = null): bool | 
					
						
							| 
									
										
										
										
											2021-08-24 20:29:26 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-09-14 17:15:37 +01:00
										 |  |  |         if (count(array_intersect(self::$accept_headers, $accept_header)) === 0) { | 
					
						
							| 
									
										
										
										
											2021-08-24 20:29:26 +01:00
										 |  |  |             return Event::next; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         switch ($route) { | 
					
						
							| 
									
										
										
										
											2021-09-16 17:04:05 +01:00
										 |  |  |             case 'actor_view_id': | 
					
						
							|  |  |  |             case 'actor_view_nickname': | 
					
						
							| 
									
										
										
										
											2021-09-18 03:22:27 +01:00
										 |  |  |                 $response = ActorResponse::handle($vars['actor']); | 
					
						
							| 
									
										
										
										
											2021-09-16 17:04:05 +01:00
										 |  |  |                 return Event::stop; | 
					
						
							| 
									
										
										
										
											2021-09-14 17:15:37 +01:00
										 |  |  |             case 'note_view': | 
					
						
							| 
									
										
										
										
											2021-08-24 20:29:26 +01:00
										 |  |  |                 $response = NoteResponse::handle($vars['note']); | 
					
						
							|  |  |  |                 return Event::stop; | 
					
						
							| 
									
										
										
										
											2021-09-20 17:04:24 +01:00
										 |  |  |             case 'actor_favourites_id': | 
					
						
							|  |  |  |             case 'actor_favourites_nickname': | 
					
						
							| 
									
										
										
										
											2021-09-18 03:22:27 +01:00
										 |  |  |                 $response = LikeResponse::handle($vars['actor']); | 
					
						
							| 
									
										
										
										
											2021-09-16 17:04:05 +01:00
										 |  |  |                 return Event::stop; | 
					
						
							| 
									
										
										
										
											2021-09-20 17:04:24 +01:00
										 |  |  |             case 'actor_subscriptions_id': | 
					
						
							|  |  |  |             case 'actor_subscriptions_nickname': | 
					
						
							| 
									
										
										
										
											2021-09-18 03:22:27 +01:00
										 |  |  |                 $response = FollowingResponse::handle($vars['actor']); | 
					
						
							| 
									
										
										
										
											2021-09-16 17:04:05 +01:00
										 |  |  |                 return Event::stop; | 
					
						
							| 
									
										
										
										
											2021-09-20 17:04:24 +01:00
										 |  |  |             case 'actor_subscribers_id': | 
					
						
							|  |  |  |             case 'actor_subscribers_nickname': | 
					
						
							| 
									
										
										
										
											2021-09-18 03:22:27 +01:00
										 |  |  |                 $response = FollowersResponse::handle($vars['actor']); | 
					
						
							| 
									
										
										
										
											2021-09-14 17:15:37 +01:00
										 |  |  |                 return Event::stop; | 
					
						
							| 
									
										
										
										
											2021-08-24 20:29:26 +01:00
										 |  |  |             default: | 
					
						
							|  |  |  |                 return Event::next; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-09-01 23:50:45 +01:00
										 |  |  | } |