From e1cc6bc6249195f96a1f8f1092d650b2a8eee91c Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Mon, 15 Aug 2022 16:09:09 +0100 Subject: [PATCH] Start work on response filters for 0.16 --- app/controllers/general.php | 4 + src/Appwrite/Utopia/Response/Filters/V15.php | 125 +++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 src/Appwrite/Utopia/Response/Filters/V15.php diff --git a/app/controllers/general.php b/app/controllers/general.php index 9c2c5d3b81..c3ecfb8737 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -20,6 +20,7 @@ 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 Appwrite\Utopia\Response\Filters\V14 as ResponseV14; +use Appwrite\Utopia\Response\Filters\V15 as ResponseV15; use Utopia\CLI\Console; use Utopia\Database\Database; use Utopia\Database\Document; @@ -190,6 +191,9 @@ App::init() case version_compare($responseFormat, '0.14.0', '<='): Response::setFilter(new ResponseV14()); break; + case version_compare($responseFormat, '0.15.0', '<='): + Response::setFilter(new ResponseV15()); + break; default: Response::setFilter(null); } diff --git a/src/Appwrite/Utopia/Response/Filters/V15.php b/src/Appwrite/Utopia/Response/Filters/V15.php new file mode 100644 index 0000000000..0a6412ab9f --- /dev/null +++ b/src/Appwrite/Utopia/Response/Filters/V15.php @@ -0,0 +1,125 @@ +handleMetricAttributes($content); + } + + return $parsedResponse; + } + + protected function handleMetricAttributes(array $content) + { + $content['timestamp'] = $content['date']; + unset($content['date']); + } + + protected function parseRemoveAttributes(array $content, array $attributes) + { + foreach ($attributes as $attribute) { + unset($content[$attribute]); + } + + return $content; + } + + protected function parseRemoveAttributesList(array $content, string $property, array $attributes) + { + $documents = $content[$property]; + $parsedResponse = []; + foreach ($documents as $document) { + $parsedResponse[] = $this->parseRemoveAttributes($document, $attributes); + } + $content[$property] = $parsedResponse; + + return $content; + } + + protected function parseCreatedAt(array $content) + { + $content['dateCreated'] = $content['$createdAt']; + unset($content['$createdAt']); + unset($content['$updatedAt']); + + return $content; + } + + protected function parseCreatedAtList(array $content, string $property) + { + $documents = $content[$property]; + $parsedResponse = []; + foreach ($documents as $document) { + $parsedResponse[] = $this->parseCreatedAt($document); + } + $content[$property] = $parsedResponse; + + return $content; + } + + protected function parseCreatedAtAndUpdatedAt(array $content) + { + $content['dateCreated'] = $content['$createdAt']; + $content['dateUpdated'] = $content['$updatedAt']; + unset($content['$createdAt']); + unset($content['$updatedAt']); + + return $content; + } + + protected function parseCreatedAtAndUpdatedAtList(array $content, string $property) + { + $documents = $content[$property]; + $parsedResponse = []; + foreach ($documents as $document) { + $parsedResponse[] = $this->parseCreatedAtAndUpdatedAt($document); + } + $content[$property] = $parsedResponse; + + return $content; + } +}