diff --git a/app/controllers/general.php b/app/controllers/general.php index 5c682efb45..1c49e3cb7a 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -16,6 +16,7 @@ use Appwrite\Event\Certificate; use Appwrite\Network\Validator\Origin; use Appwrite\Utopia\Response\Filters\V11 as ResponseV11; use Appwrite\Utopia\Response\Filters\V12 as ResponseV12; +use Appwrite\Utopia\Response\Filters\V13 as ResponseV13; use Utopia\CLI\Console; use Utopia\Database\Document; use Utopia\Database\Query; @@ -23,6 +24,7 @@ use Utopia\Database\Validator\Authorization; use Utopia\Validator\Hostname; use Appwrite\Utopia\Request\Filters\V12 as RequestV12; use Appwrite\Utopia\Request\Filters\V13 as RequestV13; +use Appwrite\Utopia\Request\Filters\V14 as RequestV14; use Utopia\Validator\Text; Config::setParam('domainVerification', false); @@ -55,6 +57,9 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons case version_compare ($requestFormat , '0.13.0', '<') : Request::setFilter(new RequestV13()); break; + case version_compare ($requestFormat , '0.14.0', '<') : + Request::setFilter(new RequestV14()); + break; default: Request::setFilter(null); } @@ -173,6 +178,9 @@ App::init(function ($utopia, $request, $response, $console, $project, $dbForCons case version_compare ($responseFormat , '0.12.4', '<='): Response::setFilter(new ResponseV12()); break; + case version_compare ($responseFormat , '0.13.4', '<='): + Response::setFilter(new ResponseV13()); + break; default: Response::setFilter(null); } diff --git a/src/Appwrite/Utopia/Request/Filters/V14.php b/src/Appwrite/Utopia/Request/Filters/V14.php new file mode 100644 index 0000000000..82b76ea1be --- /dev/null +++ b/src/Appwrite/Utopia/Request/Filters/V14.php @@ -0,0 +1,29 @@ +convertEvents($content); + break; + } + + return $content; + } + + private function convertEvents($content) + { + // TODO: Convert events + return $content; + } +} diff --git a/src/Appwrite/Utopia/Response/Filters/V11.php b/src/Appwrite/Utopia/Response/Filters/V11.php index 805e2a09c4..746269c8e7 100644 --- a/src/Appwrite/Utopia/Response/Filters/V11.php +++ b/src/Appwrite/Utopia/Response/Filters/V11.php @@ -4,7 +4,6 @@ namespace Appwrite\Utopia\Response\Filters; use Appwrite\Utopia\Response; use Appwrite\Utopia\Response\Filter; -use Exception; class V11 extends Filter { diff --git a/src/Appwrite/Utopia/Response/Filters/V12.php b/src/Appwrite/Utopia/Response/Filters/V12.php index a713076e1c..6b19b2ce0f 100644 --- a/src/Appwrite/Utopia/Response/Filters/V12.php +++ b/src/Appwrite/Utopia/Response/Filters/V12.php @@ -4,7 +4,6 @@ namespace Appwrite\Utopia\Response\Filters; use Appwrite\Utopia\Response; use Appwrite\Utopia\Response\Filter; -use Exception; class V12 extends Filter { diff --git a/src/Appwrite/Utopia/Response/Filters/V13.php b/src/Appwrite/Utopia/Response/Filters/V13.php new file mode 100644 index 0000000000..b855b477ef --- /dev/null +++ b/src/Appwrite/Utopia/Response/Filters/V13.php @@ -0,0 +1,97 @@ +parseProject($content); + break; + + case Response::MODEL_PROJECT_LIST: + $parsedResponse = $this->parseProjectList($content); + break; + + case Response::MODEL_MEMBERSHIP: + $parsedResponse = $this->parseMembership($content); + break; + case Response::MODEL_MEMBERSHIP_LIST: + $parsedResponse = $this->parseMembershipList($content); + break; + + case Response::MODEL_EXECUTION: + $parsedResponse = $this->parseExecution($content); + break; + case Response::MODEL_EXECUTION_LIST: + $parsedResponse = $this->parseExecutionList($content); + break; + } + + return $parsedResponse; + } + + protected function parseExecution($content) { + $content['stdout'] = $content['response']; + unset($content['response']); + + return $content; + } + + protected function parseExecutionList($content) { + $executions = $content['executions']; + $parsedResponse = []; + foreach ($executions as $document) { + $parsedResponse[] = $this->parseExecution($document); + } + $content['executions'] = $parsedResponse; + return $content; + } + + protected function parseProject($content) { + $content['providers'] = $content['authProviders']; + unset($content['authProviders']); + + return $content; + } + + protected function parseProjectList($content) { + $projects = $content['projects']; + $parsedResponse = []; + foreach ($projects as $document) { + $parsedResponse[] = $this->parseProject($document); + } + $content['projects'] = $parsedResponse; + return $content; + } + + protected function parseMembership($content) { + $content['name'] = $content['userName']; + unset($content['userName']); + + $content['email'] = $content['userEmail']; + unset($content['userEmail']); + + unset($content['teamName']); + + return $content; + } + + protected function parseMembershipList($content) { + $memberships = $content['memberships']; + $parsedResponse = []; + foreach ($memberships as $document) { + $parsedResponse[] = $this->parseMembership($document); + } + $content['memberships'] = $parsedResponse; + return $content; + } +} \ No newline at end of file