|
|
// ... lines 1 - 7
|
|
class AutoGroupResourceMetadataFactory implements ResourceMetadataFactoryInterface |
|
{ |
|
|
// ... lines 10 - 33
|
|
private function updateContextOnOperations(array $operations, string $shortName, bool $isItem) |
|
{ |
|
foreach ($operations as $operationName => $operationOptions) { |
|
$operationOptions['normalization_context'] = $operationOptions['normalization_context'] ?? []; |
|
$operationOptions['normalization_context']['groups'] = $operationOptions['normalization_context']['groups'] ?? []; |
|
$operationOptions['normalization_context']['groups'] = array_unique(array_merge( |
|
$operationOptions['normalization_context']['groups'], |
|
$this->getDefaultGroups($shortName, true, $isItem, $operationName) |
|
)); |
|
|
|
$operationOptions['denormalization_context'] = $operationOptions['denormalization_context'] ?? []; |
|
$operationOptions['denormalization_context']['groups'] = $operationOptions['denormalization_context']['groups'] ?? []; |
|
$operationOptions['denormalization_context']['groups'] = array_unique(array_merge( |
|
$operationOptions['denormalization_context']['groups'], |
|
$this->getDefaultGroups($shortName, false, $isItem, $operationName) |
|
)); |
|
|
|
|
|
$operations[$operationName] = $operationOptions; |
|
} |
|
|
|
return $operations; |
|
} |
|
|
|
private function getDefaultGroups(string $shortName, bool $normalization, bool $isItem, string $operationName) |
|
{ |
|
$shortName = strtolower($shortName); |
|
$readOrWrite = $normalization ? 'read' : 'write'; |
|
$itemOrCollection = $isItem ? 'item' : 'collection'; |
|
|
|
return [ |
|
|
|
|
|
sprintf('%s:%s', $shortName, $readOrWrite), |
|
|
|
|
|
sprintf('%s:%s:%s', $shortName, $itemOrCollection, $readOrWrite), |
|
|
|
|
|
sprintf('%s:%s:%s', $shortName, $itemOrCollection, $operationName), |
|
]; |
|
} |
|
} |