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:----lwyZMPS/Kuoj1nZMJYVu7G1eGhFJ/fw1lHfshonVCy/cWutQw3yrxHc2WxoDP/ru+tUmvXtwhYrE3uondJmS1exgf6fFdK8xVzLMYDR/xBnQC6UaD1ZzFnvQGRWmyVgqRVYGpM2O/ArwiR6nQly83hW5MSI+L2Py3JJY1Qz0ZPgPXPu2Q+Iqla7I27pFACB7AEcfPkaqM2+7/Udmm3olUctYmTNTgHGdh6rFFemG4zZIgC/SPEjEkZJ4vKs3OgJOz3MLA/f1vmsD2R78DRw3bNI2JgJmmPM/pzJS9IRQ2H371nHfVaLXQWeeQ30dBqoJLZoj2QwOVV86fE6j70cDugwf8hYgMZaQoFyT+ISfoJT8DjKVvl8v+9Q2eXccg6VCKfgb5EKj9DsehCH5Wz5DuT74lv/7EkYIhOdExXBFDxz090M5AnWDHKiMnyIzlCoKeOK75OkdwXe5V3D4RZ1mIv67MeZpOfJ3sSfki+c6vn6GueVwwGsiaJJBkoXI4Pp5KN+um2d9H/1aHr37B4xHDGAzlc6ty/C2YrhDfD9mWjMl++WR6NeqZZauMUnTv5I3IhiE6Vyj0P4p+kUvoKUhYfM/yGdR6e1KNV+uIZaWH03SIhmIpxdeVn4RIKnZ19kC2aUnaoRs2LTU+2Zonzm0I5Bj/nEMlRS5sO887h5Am8w=----ATTACHMENT:----ODg3MDQ4ODc0OTg0NzM1MSA1ODk1NTAxNjM5Mzc2NDg3IDY3MTQxNDI3MTkwNDE3NzU=