mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
fix: request and response filters
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user