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));
}