fix: request and response filters

This commit is contained in:
Christy Jacob
2022-01-04 16:30:50 +04:00
parent df9e064047
commit 2413a7fb42
6 changed files with 294 additions and 103 deletions
+3 -36
View File
@@ -28,39 +28,6 @@ class Request extends UtopiaRequest
parent::__construct($request);
}
/**
* Get Param
*
* Get param by current method name
*
* @param string $key
* @param mixed $default
* @return mixed
*/
public function getParam(string $key, $default = null): mixed
{
switch($this->getMethod()) {
case self::METHOD_GET:
return $this->getQuery($key, $default);
break;
case self::METHOD_POST:
case self::METHOD_PUT:
case self::METHOD_PATCH:
case self::METHOD_DELETE:
return $this->getPayload($key, $default);
break;
default:
return $this->getQuery($key, $default);
}
if (self::hasFilter() && self::hasRoute()) {
$endpointIdentifier = self::getRoute()->getLabel('sdk.namespace', 'unknown') . '.' . self::getRoute()->getLabel('sdk.method', 'unknown');
return self::getFilter()->parse($requestParameters, $endpointIdentifier);
} else {
return $requestParameters;
}
}
/**
* Get Params
*
@@ -88,10 +55,10 @@ class Request extends UtopiaRequest
if (self::hasFilter() && self::hasRoute()) {
$endpointIdentifier = self::getRoute()->getLabel('sdk.namespace', 'unknown') . '.' . self::getRoute()->getLabel('sdk.method', 'unknown');
return self::getFilter()->parse($requestParameters, $endpointIdentifier);
} else {
return $requestParameters;
$requestParameters = self::getFilter()->parse($requestParameters, $endpointIdentifier);
}
return $requestParameters;
}
+14 -8
View File
@@ -93,9 +93,9 @@ class V12 extends Filter
protected function removeParentProperties(array $content): array
{
unset($content['parentDocument']);
unset($content['parentProperty']);
unset($content['parentPropertyType']);
if (isset($content['parentDocument'])) unset($content['parentDocument']);
if (isset($content['parentProperty'])) unset($content['parentProperty']);
if (isset($content['parentPropertyType'])) unset($content['parentPropertyType']);
return $content;
}
@@ -103,17 +103,23 @@ class V12 extends Filter
protected function convertStatus(array $content): array
{
$content['status'] = $content['status'] === 2 ? false : true;
if (isset($content['status'])) {
$content['status'] = $content['status'] === 2 ? false : true;
}
return $content;
}
protected function convertOrder(array $content): array
{
$content['orderAttributes'] = [ $content['orderField'] ];
$content['orderTypes'] = [ $content['orderType'] ];
if (isset($content['orderField'])) {
$content['orderAttributes'] = [ $content['orderField'] ];
unset($content['orderField']);
}
unset($content['orderField']);
unset($content['orderType']);
if (isset($content['orderType'])) {
$content['orderTypes'] = [ $content['orderType'] ];
unset($content['orderType']);
}
return $content;
}
+162 -19
View File
@@ -16,19 +16,41 @@ class V11 extends Filter
switch ($model) {
// Update permissions
case Response::MODEL_DOCUMENT:
$parsedResponse = $this->parsePermissions($content);
break;
case Response::MODEL_DOCUMENT_LIST:
$parsedResponse = $this->parseDocumentList($content);
break;
case Response::MODEL_FILE:
$parsedResponse = $this->parsePermissions($content);
break;
case Response::MODEL_FILE_LIST:
$parsedResponse = $this->parseFileList($content);
break;
case Response::MODEL_EXECUTION:
$parsedResponse = $this->parseExecutionPermissions($content);
break;
case Response::MODEL_EXECUTION_LIST:
$parsedResponse = $this->parseExecutionsList($content);
break;
case Response::MODEL_FUNCTION:
$parsedResponse = $this->parseFunctionPermissions($content);
break;
case Response::MODEL_FUNCTION_LIST:
$parsedResponse = $this->parseFunctionsList($content);
break;
// Convert status from boolean to int
case Response::MODEL_USER:
$parsedResponse = $this->parseStatus($content);
break;
case Response::MODEL_USER_LIST:
$parsedResponse = $this->parseUserList($content);
break;
// Convert all Health responses back to original
case Response::MODEL_HEALTH_STATUS:
$parsedResponse = $this->parseHealthStatus($content);
@@ -48,32 +70,154 @@ class V11 extends Filter
// Complex filters
case Response::MODEL_COLLECTION:
$parsedResponse = $this->parsePermissions($content);
$parsedResponse = $this->removeRule($content, 'enabled');
$parsedResponse = $this->removeRule($content, 'permission');
$parsedResponse = $this->removeRule($content, 'indexes');
$parsedResponse = $this->removeRule($content, 'enabled');
$parsedResponse = $this->addDate($content, 'dateCreated');
$parsedResponse = $this->addDate($content, 'dateUpdated');
$parsedResponse = $this->parseAttributes($content);
$parsedResponse = $this->parseCollection($content);
break;
case Response::MODEL_COLLECTION_LIST:
$parsedResponse = $this->parseCollectionList($content);
break;
case Response::MODEL_LOG:
$parsedResponse = $this->removeRule($content, 'userId');
$parsedResponse = $this->removeRule($content, 'userEmail');
$parsedResponse = $this->removeRule($content, 'userName');
$parsedResponse = $this->removeRule($content, 'mode');
$parsedResponse = $this->removeRule($content, 'sum');
$parsedResponse = $this->parseLog($content);
break;
case Response::MODEL_LOG_LIST:
$parsedResponse = $this->parseLogList($content);
break;
case Response::MODEL_PROJECT:
$parsedResponse = $this->addTasks($content);
$parsedResponse = $this->parseAuthLimit($content);
$parsedResponse = $this->parseOAuths($content);
$parsedResponse = $this->parseAuthsStatus($content);
$parsedResponse = $this->removeServicesStatus($content);
$parsedResponse = $this->parseProject($content);
break;
case Response::MODEL_PROJECT_LIST:
$parsedResponse = $this->parseProjectList($content);
break;
}
return $parsedResponse;
}
protected function parseDocumentList(array $content)
{
$documents = $content['documents'];
$parsedResponse = [];
foreach ($documents as $document) {
$parsedResponse[] = $this->parsePermissions($document);
}
$content['documents'] = $parsedResponse;
return $content;
}
protected function parseFileList(array $content)
{
$files = $content['files'];
$parsedResponse = [];
foreach ($files as $file) {
$parsedResponse[] = $this->parsePermissions($file);
}
$content['files'] = $parsedResponse;
return $content;
}
protected function parseExecutionsList(array $content)
{
$executions = $content['executions'];
$parsedResponse = [];
foreach ($executions as $execution) {
$parsedResponse[] = $this->parseExecutionPermissions($execution);
}
$content['executions'] = $parsedResponse;
return $content;
}
protected function parseFunctionsList(array $content)
{
$functions = $content['functions'];
$parsedResponse = [];
foreach ($functions as $function) {
$parsedResponse[] = $this->parseFunctionPermissions($function);
}
$content['functions'] = $parsedResponse;
return $content;
}
protected function parseUserList(array $content)
{
$users = $content['users'];
$parsedResponse = [];
foreach ($users as $user) {
$parsedResponse[] = $this->parseStatus($user);
}
$content['users'] = $parsedResponse;
return $content;
}
protected function parseCollection(array $content)
{
$parsedResponse = [];
$parsedResponse = $this->parsePermissions($content);
$parsedResponse = $this->removeRule($content, 'enabled');
$parsedResponse = $this->removeRule($content, 'permission');
$parsedResponse = $this->removeRule($content, 'indexes');
$parsedResponse = $this->removeRule($content, 'enabled');
$parsedResponse = $this->addDate($content, 'dateCreated');
$parsedResponse = $this->addDate($content, 'dateUpdated');
$parsedResponse = $this->parseAttributes($content);
return $parsedResponse;
}
protected function parseCollectionList(array $content)
{
$collections = $content['collections'];
$parsedResponse = [];
foreach ($collections as $collection) {
$parsedResponse[] = $this->parseCollection($collection);
}
$content['collections'] = $parsedResponse;
return $content;
}
protected function parseLog(array $content)
{
$parsedResponse = [];
$parsedResponse = $this->removeRule($content, 'userId');
$parsedResponse = $this->removeRule($content, 'userEmail');
$parsedResponse = $this->removeRule($content, 'userName');
$parsedResponse = $this->removeRule($content, 'mode');
$parsedResponse = $this->removeRule($content, 'sum');
return $parsedResponse;
}
protected function parseLogList(array $content)
{
$logs = $content['logs'];
$parsedResponse = [];
foreach ($logs as $log) {
$parsedResponse[] = $this->parseLog($log);
}
$content['logs'] = $parsedResponse;
return $content;
}
protected function parseProject(array $content)
{
$parsedResponse = [];
$parsedResponse = $this->addTasks($content);
$parsedResponse = $this->parseAuthLimit($content);
$parsedResponse = $this->parseOAuths($content);
$parsedResponse = $this->parseAuthsStatus($content);
$parsedResponse = $this->removeServicesStatus($content);
return $parsedResponse;
}
protected function parseProjectList(array $content)
{
$projects = $content['projects'];
$parsedResponse = [];
foreach ($projects as $project) {
$parsedResponse[] = $this->parseProject($project);
}
$content['projects'] = $parsedResponse;
return $content;
}
protected function parseHealthAntivirus(array $content)
{
if($content['status'] === 'pass') {
@@ -237,7 +381,6 @@ class V11 extends Filter
$content['$permissions'] = [ 'read' => $content['$read'], 'write' => $content['$write'] ];
unset($content['$read']);
unset($content['$write']);
return $content;
}