/** * {@inheritdoc} */ public function parse(Request $request) { $resource = $request->getResource(); $classMetadata = $this->classMetadataFactory->getMetadataFor($resource->getEntityClass(), $resource->getNormalizationGroups(), $resource->getDenormalizationGroups(), $resource->getValidationGroups()); $request->addHeader('Content-Type', 'application/json'); $request->setDataMode(Request::DATA_MODE_RAW); $rawModeData = []; foreach ($classMetadata->getAttributes() as $attributeMetadata) { if (!$classMetadata->getReflectionClass()->hasProperty($attributeMetadata->getName())) { // Attribute is not a property: ignore it continue; } $groups = $this->reader->getPropertyAnnotation($classMetadata->getReflectionClass()->getProperty($attributeMetadata->getName()), 'Symfony\\Component\\Serializer\\Annotation\\Groups'); if ($attributeMetadata->isIdentifier() || !$attributeMetadata->isReadable() || !count(array_intersect($groups ? $groups->getGroups() : [], $resource->getDenormalizationGroups() ?: []))) { continue; } $rawModeData[$attributeMetadata->getName()] = $this->guesser->guess($attributeMetadata); } $request->setRawModeData($rawModeData); }
/** * {@inheritdoc} */ public function parse(Request $request) { $shortName = Inflector::camelize($request->getResource()->getShortName()); switch ($request->getMethod()) { case 'POST': $request->setName(sprintf('Create %s', $shortName)); break; case 'PUT': case 'PATCH': $request->setName(sprintf('Update %s', $shortName)); break; case 'DELETE': $request->setName(sprintf('Delete %s', $shortName)); break; case 'GET': if (!preg_match(UriRequestParser::PATTERN, $request->getUrl())) { $shortName = Inflector::pluralize($shortName) . ' list'; } $request->setName(sprintf('Get %s', $shortName)); break; } }