From 9bf7d9bda4b0cd025cf1995002e646162c0ea01e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Tue, 17 May 2022 07:56:28 +0000 Subject: [PATCH 1/3] Added backwards compatibility (response&request) --- app/controllers/general.php | 8 ++ src/Appwrite/Utopia/Request/Filters/V14.php | 29 ++++++ src/Appwrite/Utopia/Response/Filters/V11.php | 1 - src/Appwrite/Utopia/Response/Filters/V12.php | 1 - src/Appwrite/Utopia/Response/Filters/V13.php | 97 ++++++++++++++++++++ 5 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 src/Appwrite/Utopia/Request/Filters/V14.php create mode 100644 src/Appwrite/Utopia/Response/Filters/V13.php 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 From 917faa07db2daab3a55d9acadbbe78298b238596 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Tue, 17 May 2022 08:22:46 +0000 Subject: [PATCH 2/3] Add event backward model --- src/Appwrite/Utopia/Request/Filters/V14.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Appwrite/Utopia/Request/Filters/V14.php b/src/Appwrite/Utopia/Request/Filters/V14.php index 82b76ea1be..7130307f0d 100644 --- a/src/Appwrite/Utopia/Request/Filters/V14.php +++ b/src/Appwrite/Utopia/Request/Filters/V14.php @@ -3,6 +3,7 @@ namespace Appwrite\Utopia\Request\Filters; use Appwrite\Utopia\Request\Filter; +use Appwrite\Migration\Version\V13 as MigrationV13; class V14 extends Filter { @@ -23,7 +24,11 @@ class V14 extends Filter private function convertEvents($content) { - // TODO: Convert events + $migration = new MigrationV13(); + + $events = $content['events'] ?? []; + $content['events'] = $migration->migrateEvents($events); + return $content; } } From ce216664cc3ccf13723edd13d306f802ae2115b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Tue, 17 May 2022 08:33:24 +0000 Subject: [PATCH 3/3] QA bug fixes --- composer.lock | 14 +++++++------- src/Appwrite/Utopia/Response/Filters/V13.php | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/composer.lock b/composer.lock index 40f7eff475..2e3db80cd2 100644 --- a/composer.lock +++ b/composer.lock @@ -6320,16 +6320,16 @@ }, { "name": "twig/twig", - "version": "v3.4.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "ed19f4bf9d19c4ef920b5d8243910bd32e85b9ba" + "reference": "e939eae92386b69b49cfa4599dd9bead6bf4a342" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/ed19f4bf9d19c4ef920b5d8243910bd32e85b9ba", - "reference": "ed19f4bf9d19c4ef920b5d8243910bd32e85b9ba", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/e939eae92386b69b49cfa4599dd9bead6bf4a342", + "reference": "e939eae92386b69b49cfa4599dd9bead6bf4a342", "shasum": "" }, "require": { @@ -6380,7 +6380,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.4.0" + "source": "https://github.com/twigphp/Twig/tree/v3.4.1" }, "funding": [ { @@ -6392,7 +6392,7 @@ "type": "tidelift" } ], - "time": "2022-05-15T06:25:28+00:00" + "time": "2022-05-17T05:48:52+00:00" }, { "name": "vimeo/psalm", @@ -6576,5 +6576,5 @@ "platform-overrides": { "php": "8.0" }, - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.3.0" } diff --git a/src/Appwrite/Utopia/Response/Filters/V13.php b/src/Appwrite/Utopia/Response/Filters/V13.php index b855b477ef..c3795d2180 100644 --- a/src/Appwrite/Utopia/Response/Filters/V13.php +++ b/src/Appwrite/Utopia/Response/Filters/V13.php @@ -5,7 +5,7 @@ namespace Appwrite\Utopia\Response\Filters; use Appwrite\Utopia\Response; use Appwrite\Utopia\Response\Filter; -class V14 extends Filter +class V13 extends Filter { // Convert 0.14 Data format to 0.13 format public function parse(array $content, string $model): array @@ -81,7 +81,7 @@ class V14 extends Filter unset($content['userEmail']); unset($content['teamName']); - + return $content; }