diff --git a/app/controllers/general.php b/app/controllers/general.php index 1046bb4461..b3586ce2f0 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -13,12 +13,13 @@ use Utopia\Config\Config; use Utopia\Domains\Domain; use Appwrite\Auth\Auth; use Appwrite\Network\Validator\Origin; -use Appwrite\Utopia\Response\Filters\V11; +use Appwrite\Utopia\Response\Filters\V11 as ResponseV11; +use Appwrite\Utopia\Response\Filters\V12 as ResponseV12; use Utopia\CLI\Console; use Utopia\Database\Document; use Utopia\Database\Query; use Utopia\Database\Validator\Authorization; -use Appwrite\Utopia\Request\Filters\V12; +use Appwrite\Utopia\Request\Filters\V12 as RequestV12; use Utopia\Validator\Text; Config::setParam('domainVerification', false); @@ -46,7 +47,7 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons if ($requestFormat) { switch($requestFormat) { case version_compare ($requestFormat , '0.12.0', '<') : - Request::setFilter(new V12()); + Request::setFilter(new RequestV12()); break; default: Request::setFilter(null); @@ -128,16 +129,6 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons $selfDomain = new Domain($request->getHostname()); $endDomain = new Domain((string)$origin); - // var_dump('referer', $referrer); - // var_dump('origin', $origin); - // var_dump('port', $request->getPort()); - // var_dump('hostname', $request->getHostname()); - // var_dump('protocol', $request->getProtocol()); - // var_dump('method', $request->getMethod()); - // var_dump('ip', $request->getIP()); - // var_dump('-----------------'); - // var_dump($request->debug()); - Config::setParam('domainVerification', ($selfDomain->getRegisterable() === $endDomain->getRegisterable()) && $endDomain->getRegisterable() !== ''); @@ -157,8 +148,11 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons $responseFormat = $request->getHeader('x-appwrite-response-format', App::getEnv('_APP_SYSTEM_RESPONSE_FORMAT', '')); if ($responseFormat) { switch($responseFormat) { - case version_compare ($responseFormat , '0.11.0', '<=') : - Response::setFilter(new V11()); + case version_compare ($responseFormat , '0.11.2', '<=') : + Response::setFilter(new ResponseV11()); + break; + case version_compare ($responseFormat , '0.12.4', '<='): + Response::setFilter(new ResponseV12()); break; default: Response::setFilter(null); diff --git a/src/Appwrite/Utopia/Response/Filters/V12.php b/src/Appwrite/Utopia/Response/Filters/V12.php new file mode 100644 index 0000000000..210add92d6 --- /dev/null +++ b/src/Appwrite/Utopia/Response/Filters/V12.php @@ -0,0 +1,262 @@ +parseError($content); + break; + + case Response::MODEL_SESSION: + $parsedResponse = $this->parseSession($content); + break; + case Response::MODEL_SESSION_LIST: + $parsedResponse = $this->parseSessionList($content); + break; + + case Response::MODEL_FILE: + $parsedResponse = $this->parseFile($content); + break; + case Response::MODEL_FILE_LIST: + $parsedResponse = $this->parseFileList($content); + break; + + case Response::MODEL_FUNCTION: + $parsedResponse = $this->parseFunction($content); + break; + case Response::MODEL_FUNCTION_LIST: + $parsedResponse = $this->parseFunctionList($content); + break; + + case Response::MODEL_DEPLOYMENT: + $parsedResponse = $this->parseDeployment($content); + break; + case Response::MODEL_DEPLOYMENT_LIST: + $parsedResponse = $this->parseDeploymentList($content); + break; + + case Response::MODEL_EXECUTION: + $parsedResponse = $this->parseExecution($content); + break; + case Response::MODEL_EXECUTION_LIST: + $parsedResponse = $this->parseExecutionList($content); + break; + + case Response::MODEL_USAGE_BUCKETS: + $parsedResponse = $this->parseUsageBuckets($content); + break; + + case Response::MODEL_USAGE_STORAGE: + $parsedResponse = $this->parseUsageStorage($content); + break; + + case Response::MODEL_TEAM: + $parsedResponse = $this->parseTeam($content); + break; + case Response::MODEL_TEAM_LIST: + $parsedResponse = $this->parseTeamList($content); + break; + + case Response::MODEL_DOCUMENT_LIST: + case Response::MODEL_COLLECTION_LIST: + case Response::MODEL_INDEX_LIST: + case Response::MODEL_USER_LIST: + case Response::MODEL_LOG_LIST: + case Response::MODEL_BUCKET_LIST: + case Response::MODEL_MEMBERSHIP_LIST: + case Response::MODEL_RUNTIME_LIST: + case Response::MODEL_BUILD_LIST: + case Response::MODEL_PROJECT_LIST: + case Response::MODEL_WEBHOOK_LIST: + case Response::MODEL_KEY_LIST: + case Response::MODEL_PLATFORM_LIST: + case Response::MODEL_DOMAIN_LIST: + case Response::MODEL_COUNTRY_LIST: + case Response::MODEL_CONTINENT_LIST: + case Response::MODEL_LANGUAGE_LIST: + case Response::MODEL_CURRENCY_LIST: + case Response::MODEL_PHONE_LIST: + case Response::MODEL_METRIC_LIST: + case Response::MODEL_ATTRIBUTE_LIST: + $parsedResponse = $this->parseList($content); + break; + } + + return $parsedResponse; + } + + protected function parseError(array $content) + { + unset($content['type']); + return $content; + } + + protected function parseSession(array $content) + { + $content['providerToken'] = $content['providerAccessToken']; + unset($content['providerAccessToken']); + + unset($content['providerAccessTokenExpiry']); + + unset($content['providerRefreshToken']); + + return $content; + } + + protected function parseSessionList(array $content) + { + $sessions = $content['sessions']; + $parsedResponse = []; + foreach ($sessions as $document) { + $parsedResponse[] = $this->parseSession($document); + } + $content['sessions'] = $parsedResponse; + $content['sum'] = $content['total']; + unset($content['total']); + return $content; + } + + protected function parseFile(array $content) + { + unset($content['bucketId']); + unset($content['chunksTotal']); + unset($content['chunksUploaded']); + + return $content; + } + + protected function parseFileList(array $content) + { + $files = $content['files']; + $parsedResponse = []; + foreach ($files as $document) { + $parsedResponse[] = $this->parseFile($document); + } + $content['files'] = $parsedResponse; + $content['sum'] = $content['total']; + unset($content['total']); + return $content; + } + + protected function parseFunction(array $content) + { + $content['tag'] = $content['deployment']; + unset($content['deployment']); + return $content; + } + + protected function parseFunctionList(array $content) + { + $functions = $content['functions']; + $parsedResponse = []; + foreach ($functions as $document) { + $parsedResponse[] = $this->parseFunction($document); + } + $content['functions'] = $parsedResponse; + $content['sum'] = $content['total']; + unset($content['total']); + return $content; + } + + protected function parseDeployment(array $content) + { + $content['functionId'] = $content['resourceId']; + $content['command'] = $content['entrypoint']; + return $content; + } + + protected function parseDeploymentList(array $content) + { + $deployments = $content['deployments']; + $parsedResponse = []; + foreach ($deployments as $document) { + $parsedResponse[] = $this->parseDeployment($document); + } + $content['deployments'] = $parsedResponse; + $content['sum'] = $content['total']; + unset($content['total']); + return $content; + } + + protected function parseUsageBuckets(array $content) + { + unset($content['filesStorage']); + } + + protected function parseUsageStorage(array $content) + { + $content['storage'] = $content['filesStorage']; + unset($content['filesStorage']); + + $content['files'] = $content['tagsStorage']; + unset($content['tagsStorage']); + + unset($content['filesCount']); + unset($content['bucketsCount']); + unset($content['bucketsCreate']); + unset($content['bucketsRead']); + unset($content['bucketsUpdate']); + unset($content['bucketsDelete']); + unset($content['filesCount']); + unset($content['bucketsDelete']); + unset($content['filesCreate']); + unset($content['filesRead']); + unset($content['filesUpdate']); + unset($content['filesDelete']); + } + + protected function parseExecution($content) { + $content['exitCode'] = $content['statusCode']; + unset($content['statusCode']); + + return $content; + } + + protected function parseExecutionList($content) { + $executions = $content['executions']; + $parsedResponse = []; + foreach ($executions as $document) { + $parsedResponse[] = $this->parseExecution($document); + } + $content['executions'] = $parsedResponse; + $content['sum'] = $content['total']; + unset($content['total']); + return $content; + } + + protected function parseTeam($content) { + $content['sum'] = $content['total']; + unset($content['total']); + return $content; + } + + protected function parseTeamList($content) { + $teams = $content['teams']; + $parsedResponse = []; + foreach ($teams as $document) { + $parsedResponse[] = $this->parseTeam($document); + } + $content['teams'] = $parsedResponse; + $content['sum'] = $content['total']; + unset($content['total']); + return $content; + } + + protected function parseList($content) { + $content['sum'] = $content['total']; + unset($content['total']); + return $content; + } +} \ No newline at end of file