public function processAction()
{
$request = $this->getRequest();
$headers = $request->getHeaders();
$accept = $this->getHeaderType($headers, 'accept');
$contentType = $this->getHeaderType($headers, 'content-type');
$returnTrees = 'application/json' == $accept ? false : true;
$config = $this->getConfig();
if (!$config instanceof ConfigResource) {
return $config;
}
switch ($request->getMethod()) {
case $request::METHOD_GET:
return $config->fetch($returnTrees);
case $request::METHOD_PATCH:
$submitTrees = 'application/json' == $contentType ? false : true;
$params = $this->getBodyParams($submitTrees);
$result = $config->patch($params, $submitTrees);
// If same accept and content-type, return the result directly
if ($submitTrees === $returnTrees) {
return $result;
}
// If tree was submitted, but not Accepted, create dot-separated values
if ($submitTrees && !$returnTrees) {
return $config->traverseArray($params);
}
// If tree was not submitted, but is Accepted, create nested values
$return = [];
foreach ($params as $key => $value) {
$config->createNestedKeyValuePair($return, $key, $value);
}
return $return;
default:
return new ApiProblemResponse(new ApiProblem(405, 'Only the methods GET and PATCH are allowed for this URI'));
}
}