Added backwards compatibility (response&request)

This commit is contained in:
Matej Bačo
2022-05-17 07:56:28 +00:00
parent d1d007db8e
commit 9bf7d9bda4
5 changed files with 134 additions and 2 deletions
+8
View File
@@ -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);
}
@@ -0,0 +1,29 @@
<?php
namespace Appwrite\Utopia\Request\Filters;
use Appwrite\Utopia\Request\Filter;
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)
{
// TODO: Convert 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
{
@@ -0,0 +1,97 @@
<?php
namespace Appwrite\Utopia\Response\Filters;
use Appwrite\Utopia\Response;
use Appwrite\Utopia\Response\Filter;
class V14 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;
}
}