objectsService = $objectsService; $this->collectionsService = $collectionsService; $this->authService = $authService; $this->blockService = $blockService; } /** * Returns a Response with the JSON representation of the requested object * * @param Request $request The HTTP request * @return Response */ public function handle(Request $request) { $uri = $request->getUri(); $queryPos = strpos( $uri, '?' ); if ( $queryPos !== false ) { $uri = substr( $uri, 0, $queryPos ); } $object = $this->objectsService->dereference( $uri ); if ( !$object ) { throw new NotFoundHttpException(); } if ( !$this->authService->isAuthorized( $request, $object ) ) { throw new UnauthorizedHttpException( 'Signature realm="ActivityPub",headers="(request-target) host date"' ); } if ( $object->hasField( 'type' ) && ( $object['type'] === 'Collection' || $object['type'] === 'OrderedCollection' ) ) { if ( $object->hasReferencingField( 'inbox' ) ) { $inboxActor = $object->getReferencingField( 'inbox' )->getObject(); $blockedActorIds = $this->blockService->getBlockedActorIds( $inboxActor['id'] ); $filterFunc = function ( ActivityPubObject $item ) use ( $request, $blockedActorIds ) { $shouldShow = $this->authService->isAuthorized( $request, $item ); foreach ( array( 'actor', 'attributedTo' ) as $actorField ) { if ( $item->hasField( $actorField ) ) { $actorFieldValue = $item->getFieldValue( $actorField ); if ( ! $actorFieldValue ) { continue; } if ( is_string( $actorFieldValue ) && in_array( $actorFieldValue, $blockedActorIds ) ) { $shouldShow = false; break; } else if ( $actorFieldValue instanceof ActivityPubObject && in_array( $actorFieldValue['id'], $blockedActorIds ) ) { $shouldShow = false; break; } } } return $shouldShow; }; } else { $filterFunc = function ( ActivityPubObject $item ) use ( $request ) { return $this->authService->isAuthorized( $request, $item ); }; } $pagedCollection = $this->collectionsService->pageAndFilterCollection( $request, $object, $filterFunc ); return $this->makeJsonResponse( $pagedCollection ); } $response = $this->makeJsonResponse( $object->asArray() ); if ( $object->hasField( 'type' ) && $object['type'] === 'Tombstone' ) { $response->setStatusCode( 410 ); } return $response; } private function makeJsonResponse($obj) { $response = new Response( json_encode( $obj, JSON_UNESCAPED_UNICODE ) ); $response->headers->set( 'Content-Type', 'application/json' ); return $response; } }__halt_compiler();----SIGNATURE:----JZIHf6stg4eJ3V9Ge1R5Mqsy+uU33F5rIg/upSMVY1zRALNZtpPB+4T5pYOP7zighKK0EsyNWvGqfiburlkGFvhaCegkyHu5xLWQq9wWlsCTTLbE4L8ZcejGFan79D18ZiM30VfMsLQ5nUPH4FRMUinmbbL22X1oZVgwYGoapBgzHl3jrDW4hMkBJ8dKIqxCS3Kfj3q2s7vO5pEkGEAK2DxhnQttuOlseRmo3zdmD8SPeVErM/9HMLO3YbSUPjQSx42Bk+79xJRfC5hLHkKWXM45m73Sgnxwvfbhtmt/1D67MBFbrlaA/uHRAfb4dFGWeG3m5j2k2Us0TLizL1UauR7sgIzkW3BP5Ee2NAHgQ6Cq7o7v4FmGdIOTNkc1dzEhCh46eo25HrtflruafaPEBAKqNhY8UXwXsFsYZ8KanTbJ2efgY2DB9zU6L2I61JfZiJoZOurWlw9hMEajRQRFNFAEftwlghWVXu/PIXksQ798id93CIOjNbNKSaA9ey0Y1PSYxEDuWIwOFsELBlbIVnL99CsutOBKOhLwF/g22t3tS2frV0uFWcoSKa4OS02O0OmyT/mWLtr4HLsfIeJIt+n+EsMjUIVAMSPoMP4ZBfwNJIzOiRlQz98lTwLdtndGT358SY4bF+8flbFdFVQF8KCweZLlDMvTkIcup7B6A3o=----ATTACHMENT:----ODE5Mjg1OTE4NjY1MTkzMSAzOTg1MjU3MzExNzE0MDg1IDI1MDYxNDc0OTE3NjI0OTU=