/** * Create the selector configuration * * @param string $controllerService * @param string $selector * @return array */ public function createContentNegotiationConfig($controllerService, $selector = null) { if (null === $selector) { $selector = 'Json'; } $mediaType = $this->createMediaType(); $config = array('zf-content-negotiation' => array( 'controllers' => array( $controllerService => $selector, ), 'accept_whitelist' => array( $controllerService => array( $mediaType, 'application/json', 'application/*+json', ), ), 'content_type_whitelist' => array( $controllerService => array( $mediaType, 'application/json', ), ), )); return $this->configResource->patch($config, true); }
/** * Create the selector configuration * * @param string $controllerService * @param string $selector * @return array */ public function createContentNegotiationConfig($controllerService, $selector = null) { if (null === $selector) { $selector = 'Json'; } $config = ['zf-content-negotiation' => ['controllers' => [$controllerService => $selector], 'accept-whitelist' => [$controllerService => ['application/json', 'application/*+json']], 'content-type-whitelist' => [$controllerService => ['application/json']]]]; return $this->configResource->patch($config, true); }
/** * Update HAL configuration * * @param RestServiceEntity $original * @param RestServiceEntity $update */ public function updateHalConfig(RestServiceEntity $original, RestServiceEntity $update) { $service = $original->controllerServiceName; $baseKey = 'zf-hal.metadata_map.'; $entityClass = $update->entityClass ?: $original->entityClass; $collectionClass = $update->collectionClass ?: $original->collectionClass; $halConfig = $this->getConfigForSubkey('zf-hal.metadata_map'); $entityUpdated = false; $collectionUpdated = false; // Do we have a new entity class? if (!isset($halConfig[$entityClass])) { $data = array($entityClass => array('entity_identifier_name' => $update->entityIdentifierName ?: $original->entityIdentifierName, 'route_name' => $update->routeName ?: $original->routeName, 'route_identifier_name' => $update->routeIdentifierName ?: $original->routeIdentifierName)); $hydratorName = $update->hydratorName ?: $original->hydratorName; if ($hydratorName) { $data[$entityClass]['hydrator'] = $hydratorName; } $data = array('zf-hal' => array('metadata_map' => $data)); $this->configResource->patch($data, true); $entityUpdated = true; } // Do we have a new collection class? if (!isset($halConfig[$collectionClass])) { $data = array($collectionClass => array('entity_identifier_name' => $update->entityIdentifierName ?: $original->entityIdentifierName, 'route_name' => $update->routeName ?: $original->routeName, 'route_identifier_name' => $update->routeIdentifierName ?: $original->routeIdentifierName, 'is_collection' => true)); $data = array('zf-hal' => array('metadata_map' => $data)); $this->configResource->patch($data, true); $collectionUpdated = true; } $entityUpdate = array(); $collectionUpdate = array(); if (!$entityUpdated && !$collectionUpdated && $update->routeIdentifierName && $update->routeIdentifierName !== $original->routeIdentifierName) { $entityUpdate['route_identifier_name'] = $update->routeIdentifierName; $collectionUpdate['route_identifier_name'] = $update->routeIdentifierName; } if (!$entityUpdated && !$collectionUpdated && $update->entityIdentifierName && $update->entityIdentifierName !== $original->entityIdentifierName) { $entityUpdate['entity_identifier_name'] = $update->entityIdentifierName; $collectionUpdate['entity_identifier_name'] = $update->entityIdentifierName; } if (!$entityUpdated && !$collectionUpdated && $update->routeName && $update->routeName !== $original->routeName) { $entityUpdate['route_name'] = $update->routeName; $collectionUpdate['route_name'] = $update->routeName; } if (!$entityUpdated && $update->hydratorName && $update->hydratorName !== $original->hydratorName) { $entityUpdate['hydrator'] = $update->hydratorName; } if (!$entityUpdated && !empty($entityUpdate)) { $entityConfig = $this->getConfigForSubkey($baseKey . $entityClass); $update = ArrayUtils::merge($entityConfig, $entityUpdate); $key = $baseKey . $entityClass; $this->configResource->patchKey($key, $update); } if (!$collectionUpdated && !empty($collectionUpdate)) { $collectionConfig = $this->getConfigForSubkey($baseKey . $collectionClass); $update = ArrayUtils::merge($collectionConfig, $collectionUpdate); $key = $baseKey . $collectionClass; $this->configResource->patchKey($key, $update); } }
/** * Create the selector configuration * * @param string $controllerService * @param string $selector * @return array */ public function createContentNegotiationConfig($controllerService, $selector = null) { // @codeCoverageIgnoreStart if (null === $selector) { $selector = 'Json'; } // @codeCoverageIgnoreEnd $config = array('zf-content-negotiation' => array('controllers' => array($controllerService => $selector), 'accept-whitelist' => array($controllerService => array('application/json', 'application/*+json')), 'content-type-whitelist' => array($controllerService => array('application/json')))); return $this->configResource->patch($config, true); }
/** * Update the authorization list for a given module by version * * @param array $privileges * @param int $version * @return AuthorizationEntity */ public function update(array $privileges, $version = 1) { $toStore = array( 'zf-mvc-auth' => array( 'authorization' => $this->remapServiceNamesForStorage($privileges), ), ); $this->configResource->patch($toStore, true); return $this->fetch($version); }
/** * Update the documentation to add a new $version based on the $previous * * @param int $previous Previous version * @param int $version New version * @return true */ protected function updateDocumentationVersion($previous, $version) { if (!$this->docsConfigResource) { // Nothing to do return true; } $originalDocs = $this->docsConfigResource->fetch(true); $newDocs = $this->changeVersionArray($originalDocs, $previous, $version); $this->docsConfigResource->patch($newDocs, true); return true; }
/** * Update REST configuration * * @param DoctrineRestServiceEntity $original * @param DoctrineRestServiceEntity $update */ public function updateRestConfig(DoctrineRestServiceEntity $original, DoctrineRestServiceEntity $update) { $patch = []; foreach ($this->restScalarUpdateOptions as $property => $configKey) { if (!$update->{$property}) { continue; } $patch[$configKey] = $update->{$property}; } if (empty($patch)) { goto updateArrayOptions; } $config = ['zf-rest' => [$original->controllerServiceName => $patch]]; $this->configResource->patch($config, true); updateArrayOptions: foreach ($this->restArrayUpdateOptions as $property => $configKey) { if ($update->{$property} === null) { continue; } $key = sprintf('zf-rest.%s.%s', $original->controllerServiceName, $configKey); $this->configResource->patchKey($key, $update->{$property}); } }
public function testPatchWithTreeFlagSetToTruePerformsArrayMergeAndReturnsConfig() { $config = ['foo' => 'bar', 'bar' => ['baz' => 'bat', 'bat' => 'bogus'], 'baz' => 'not what you think']; $configResource = new ConfigResource($config, $this->file, $this->writer); $patch = ['bar' => ['baz' => 'UPDATED'], 'baz' => 'what you think']; $response = $configResource->patch($patch, true); $this->assertEquals($patch, $response); $expected = ['bar' => ['baz' => 'UPDATED'], 'baz' => 'what you think']; $written = $this->writer->writtenConfig; $this->assertEquals($expected, $written); }