Merge pull request #3230 from appwrite/feat-014-backwards-compatibility
Added backwards compatibility (response&request)
This commit is contained in:
commit
21a68a2524
6 changed files with 146 additions and 9 deletions
|
@ -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);
|
||||
}
|
||||
|
|
14
composer.lock
generated
14
composer.lock
generated
|
@ -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"
|
||||
}
|
||||
|
|
34
src/Appwrite/Utopia/Request/Filters/V14.php
Normal file
34
src/Appwrite/Utopia/Request/Filters/V14.php
Normal file
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
|
||||
namespace Appwrite\Utopia\Request\Filters;
|
||||
|
||||
use Appwrite\Utopia\Request\Filter;
|
||||
use Appwrite\Migration\Version\V13 as MigrationV13;
|
||||
|
||||
class V14 extends Filter
|
||||
{
|
||||
// Convert 0.13 params format to 0.14 format
|
||||
public function parse(array $content, string $model): array
|
||||
{
|
||||
switch ($model) {
|
||||
case "functions.create":
|
||||
case "functions.update":
|
||||
case "projects.createWebhook":
|
||||
case "projects.updateWebhook":
|
||||
$content = $this->convertEvents($content);
|
||||
break;
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
private function convertEvents($content)
|
||||
{
|
||||
$migration = new MigrationV13();
|
||||
|
||||
$events = $content['events'] ?? [];
|
||||
$content['events'] = $migration->migrateEvents($events);
|
||||
|
||||
return $content;
|
||||
}
|
||||
}
|
|
@ -4,7 +4,6 @@ namespace Appwrite\Utopia\Response\Filters;
|
|||
|
||||
use Appwrite\Utopia\Response;
|
||||
use Appwrite\Utopia\Response\Filter;
|
||||
use Exception;
|
||||
|
||||
class V11 extends Filter
|
||||
{
|
||||
|
|
|
@ -4,7 +4,6 @@ namespace Appwrite\Utopia\Response\Filters;
|
|||
|
||||
use Appwrite\Utopia\Response;
|
||||
use Appwrite\Utopia\Response\Filter;
|
||||
use Exception;
|
||||
|
||||
class V12 extends Filter
|
||||
{
|
||||
|
|
97
src/Appwrite/Utopia/Response/Filters/V13.php
Normal file
97
src/Appwrite/Utopia/Response/Filters/V13.php
Normal file
|
@ -0,0 +1,97 @@
|
|||
<?php
|
||||
|
||||
namespace Appwrite\Utopia\Response\Filters;
|
||||
|
||||
use Appwrite\Utopia\Response;
|
||||
use Appwrite\Utopia\Response\Filter;
|
||||
|
||||
class V13 extends Filter
|
||||
{
|
||||
// Convert 0.14 Data format to 0.13 format
|
||||
public function parse(array $content, string $model): array
|
||||
{
|
||||
$parsedResponse = $content;
|
||||
|
||||
switch ($model) {
|
||||
case Response::MODEL_PROJECT:
|
||||
$parsedResponse = $this->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;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue