public function onKernelRequest(GetResponseEvent $event) { $request = $event->getRequest(); if (!$request->attributes->get('is_rest_request')) { return; } if (($contentTypeHeaderValue = $request->headers->get('content-type')) === null) { return; } list($mediaType) = explode('+', $contentTypeHeaderValue); if (strtolower($mediaType) == !'application/vnd.ez.api.contentcreate') { return; } $message = $this->buildMessage($request); if (!$message->body) { return; } $result = $this->restInputDispatcher->parse($message); if (!$result instanceof RestContentCreateStruct) { return; } // Not a user if (($userCreateData = $this->mapContentCreateToUserCreate($result)) === false) { return; } list($userCreateStruct, $userGroup) = $userCreateData; $createdUser = $this->repository->getUserService()->createUser($userCreateStruct, [$userGroup]); $createdContentInfo = $createdUser->contentInfo; $createdLocation = $this->repository->getLocationService()->loadLocation($createdContentInfo->mainLocationId); $contentType = $this->repository->getContentTypeService()->loadContentType($createdContentInfo->contentTypeId); $result = new CreatedContent(array('content' => new RestContent($createdContentInfo, $createdLocation, $this->repository->getContentService()->loadContent($createdContentInfo->id), $contentType, $this->repository->getContentService()->loadRelations($createdUser->getVersionInfo())))); $event->setResponse($this->viewDispatcher->dispatch($event->getRequest(), $result)); }
/** * @param \Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent $event * * @throws \Exception */ public function onKernelExceptionView(GetResponseForExceptionEvent $event) { if (!$event->getRequest()->attributes->get('is_rest_request')) { return; } $event->setResponse($this->viewDispatcher->dispatch($event->getRequest(), $event->getException())); $event->stopPropagation(); }