diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 58ec3ee978..dcadab5b4e 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -2,6 +2,7 @@ use Utopia\App; use Utopia\Exception; +use Utopia\Validator; use Utopia\Validator\Assoc; use Utopia\Validator\WhiteList; use Appwrite\Network\Validator\Email; @@ -346,7 +347,7 @@ App::patch('/v1/users/:userId/status') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) ->param('userId', '', new UID(), 'User unique ID.') - ->param('status', '', new WhiteList([Auth::USER_STATUS_ACTIVATED, Auth::USER_STATUS_BLOCKED, Auth::USER_STATUS_UNACTIVATED], true), 'User Status code. To activate the user pass '.Auth::USER_STATUS_ACTIVATED.', to block the user pass '.Auth::USER_STATUS_BLOCKED.' and for disabling the user pass '.Auth::USER_STATUS_UNACTIVATED) + ->param('status', '', new WhiteList([Auth::USER_STATUS_ACTIVATED, Auth::USER_STATUS_BLOCKED, Auth::USER_STATUS_UNACTIVATED], true, Validator::TYPE_INTEGER), 'User Status code. To activate the user pass '.Auth::USER_STATUS_ACTIVATED.', to block the user pass '.Auth::USER_STATUS_BLOCKED.' and for disabling the user pass '.Auth::USER_STATUS_UNACTIVATED) ->inject('response') ->inject('projectDB') ->action(function ($userId, $status, $response, $projectDB) { diff --git a/app/controllers/mock.php b/app/controllers/mock.php index 7e65e2d936..dcb8d3f290 100644 --- a/app/controllers/mock.php +++ b/app/controllers/mock.php @@ -3,12 +3,12 @@ global $utopia, $request, $response; use Appwrite\Database\Document; +use Appwrite\Network\Validator\Host; use Appwrite\Utopia\Response; use Utopia\App; use Utopia\Validator\Numeric; use Utopia\Validator\Text; use Utopia\Validator\ArrayList; -use Utopia\Validator\Host; use Utopia\Storage\Validator\File; App::get('/v1/mock/tests/foo') diff --git a/composer.json b/composer.json index c049371ba6..b8627ae7bb 100644 --- a/composer.json +++ b/composer.json @@ -37,7 +37,7 @@ "appwrite/php-clamav": "1.0.*", - "utopia-php/framework": "0.12.*", + "utopia-php/framework": "0.14.*", "utopia-php/abuse": "0.4.*", "utopia-php/analytics": "0.2.*", "utopia-php/audit": "0.5.*", @@ -50,7 +50,7 @@ "utopia-php/domains": "0.2.*", "utopia-php/swoole": "0.2.*", "utopia-php/system": "0.4.*", - "utopia-php/storage": "0.4.*", + "utopia-php/storage": "0.5.*", "utopia-php/image": "0.1.*", "resque/php-resque": "1.3.6", diff --git a/composer.lock b/composer.lock index 2c30376397..1a2d46c5b5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5da41c79568fd0847c9e22ba8827ea41", + "content-hash": "4794e92620ff45f0f8c9bf92d9763c64", "packages": [ { "name": "adhocore/jwt", @@ -1260,12 +1260,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", "shasum": "" }, "require": { @@ -1278,7 +1278,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1316,7 +1316,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-ctype/tree/main" }, "funding": [ { @@ -1332,7 +1332,7 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { "name": "utopia-php/abuse", @@ -1706,16 +1706,16 @@ }, { "name": "utopia-php/framework", - "version": "0.12.3", + "version": "0.14.0", "source": { "type": "git", "url": "https://github.com/utopia-php/framework.git", - "reference": "78be43a0eb711f3677769dfb445e5111bfafaa88" + "reference": "92d4a36f3b0e22393a31877c5317c96e01760339" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/framework/zipball/78be43a0eb711f3677769dfb445e5111bfafaa88", - "reference": "78be43a0eb711f3677769dfb445e5111bfafaa88", + "url": "https://api.github.com/repos/utopia-php/framework/zipball/92d4a36f3b0e22393a31877c5317c96e01760339", + "reference": "92d4a36f3b0e22393a31877c5317c96e01760339", "shasum": "" }, "require": { @@ -1749,9 +1749,9 @@ ], "support": { "issues": "https://github.com/utopia-php/framework/issues", - "source": "https://github.com/utopia-php/framework/tree/0.12.3" + "source": "https://github.com/utopia-php/framework/tree/0.14.0" }, - "time": "2021-03-22T22:02:23+00:00" + "time": "2021-04-15T21:01:44+00:00" }, { "name": "utopia-php/image", @@ -1964,16 +1964,16 @@ }, { "name": "utopia-php/storage", - "version": "0.4.3", + "version": "0.5.0", "source": { "type": "git", "url": "https://github.com/utopia-php/storage.git", - "reference": "9db3ab713a6d392c3c2c799aeea751f6c8dc2ff7" + "reference": "92ae20c7a2ac329f573a58a82dc245134cc63408" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/storage/zipball/9db3ab713a6d392c3c2c799aeea751f6c8dc2ff7", - "reference": "9db3ab713a6d392c3c2c799aeea751f6c8dc2ff7", + "url": "https://api.github.com/repos/utopia-php/storage/zipball/92ae20c7a2ac329f573a58a82dc245134cc63408", + "reference": "92ae20c7a2ac329f573a58a82dc245134cc63408", "shasum": "" }, "require": { @@ -2010,9 +2010,9 @@ ], "support": { "issues": "https://github.com/utopia-php/storage/issues", - "source": "https://github.com/utopia-php/storage/tree/0.4.3" + "source": "https://github.com/utopia-php/storage/tree/0.5.0" }, - "time": "2021-03-02T20:25:02+00:00" + "time": "2021-04-15T16:43:12+00:00" }, { "name": "utopia-php/swoole", @@ -4997,12 +4997,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "9a90698d4624b85a578007a00312338d3adecaf8" + "reference": "1d077bd682f7c0794d5f5b794b16e2b30febec6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/9a90698d4624b85a578007a00312338d3adecaf8", - "reference": "9a90698d4624b85a578007a00312338d3adecaf8", + "url": "https://api.github.com/repos/symfony/console/zipball/1d077bd682f7c0794d5f5b794b16e2b30febec6b", + "reference": "1d077bd682f7c0794d5f5b794b16e2b30febec6b", "shasum": "" }, "require": { @@ -5072,7 +5072,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/5.x" + "source": "https://github.com/symfony/console/tree/v5.3.0-BETA1" }, "funding": [ { @@ -5088,7 +5088,7 @@ "type": "tidelift" } ], - "time": "2021-04-09T09:54:19+00:00" + "time": "2021-04-16T17:36:28+00:00" }, { "name": "symfony/deprecation-contracts", @@ -5140,7 +5140,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/main" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" }, "funding": [ { @@ -5164,12 +5164,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170" + "reference": "053f7184175d5417c933817341c5cc0053ddacd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5601e09b69f26c1828b13b6bb87cb07cddba3170", - "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/053f7184175d5417c933817341c5cc0053ddacd5", + "reference": "053f7184175d5417c933817341c5cc0053ddacd5", "shasum": "" }, "require": { @@ -5182,7 +5182,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5222,7 +5222,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/main" }, "funding": [ { @@ -5238,7 +5238,7 @@ "type": "tidelift" } ], - "time": "2021-01-22T09:19:47+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/polyfill-intl-normalizer", @@ -5246,12 +5246,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248" + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248", - "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", "shasum": "" }, "require": { @@ -5264,7 +5264,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5307,7 +5307,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/main" }, "funding": [ { @@ -5323,7 +5323,7 @@ "type": "tidelift" } ], - "time": "2021-01-22T09:19:47+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/polyfill-mbstring", @@ -5331,12 +5331,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" + "reference": "298b87cbbe99cb2c9f88fb1d1de78833b64b483e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1", - "reference": "5232de97ee3b75b0360528dae24e73db49566ab1", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/298b87cbbe99cb2c9f88fb1d1de78833b64b483e", + "reference": "298b87cbbe99cb2c9f88fb1d1de78833b64b483e", "shasum": "" }, "require": { @@ -5349,7 +5349,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5388,7 +5388,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-mbstring/tree/main" }, "funding": [ { @@ -5404,7 +5404,7 @@ "type": "tidelift" } ], - "time": "2021-01-22T09:19:47+00:00" + "time": "2021-04-19T09:32:22+00:00" }, { "name": "symfony/polyfill-php73", @@ -5412,12 +5412,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2" + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", - "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", "shasum": "" }, "require": { @@ -5427,7 +5427,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5468,7 +5468,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-php73/tree/main" }, "funding": [ { @@ -5484,7 +5484,7 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/polyfill-php80", @@ -5492,12 +5492,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" + "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", - "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", + "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", "shasum": "" }, "require": { @@ -5507,7 +5507,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5552,7 +5552,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-php80/tree/main" }, "funding": [ { @@ -5568,7 +5568,7 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/service-contracts", @@ -5632,7 +5632,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/main" + "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" }, "funding": [ { @@ -5716,7 +5716,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/5.x" + "source": "https://github.com/symfony/string/tree/v5.3.0-BETA1" }, "funding": [ { diff --git a/src/Appwrite/Auth/Validator/Password.php b/src/Appwrite/Auth/Validator/Password.php index 3afcbe7aa3..d3dd810fa7 100644 --- a/src/Appwrite/Auth/Validator/Password.php +++ b/src/Appwrite/Auth/Validator/Password.php @@ -40,4 +40,28 @@ class Password extends Validator return true; } + + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_STRING; + } } diff --git a/src/Appwrite/Database/Validator/Authorization.php b/src/Appwrite/Database/Validator/Authorization.php index 5537413b4d..1ae2554001 100644 --- a/src/Appwrite/Database/Validator/Authorization.php +++ b/src/Appwrite/Database/Validator/Authorization.php @@ -188,4 +188,28 @@ class Authorization extends Validator { self::$status = self::$statusDefault; } + + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_ARRAY; + } } diff --git a/src/Appwrite/Database/Validator/DocumentId.php b/src/Appwrite/Database/Validator/DocumentId.php index ecfdcc5624..fcc2a57aef 100644 --- a/src/Appwrite/Database/Validator/DocumentId.php +++ b/src/Appwrite/Database/Validator/DocumentId.php @@ -78,4 +78,28 @@ class DocumentId extends Validator return true; } + + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_STRING; + } } diff --git a/src/Appwrite/Database/Validator/Key.php b/src/Appwrite/Database/Validator/Key.php index 53cdc3eb77..1aab06f76d 100644 --- a/src/Appwrite/Database/Validator/Key.php +++ b/src/Appwrite/Database/Validator/Key.php @@ -48,4 +48,27 @@ class Key extends Validator return true; } + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_STRING; + } } diff --git a/src/Appwrite/Database/Validator/Permissions.php b/src/Appwrite/Database/Validator/Permissions.php index 36667e674f..2c90eef60d 100644 --- a/src/Appwrite/Database/Validator/Permissions.php +++ b/src/Appwrite/Database/Validator/Permissions.php @@ -74,4 +74,27 @@ class Permissions extends Validator return true; } + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_ARRAY; + } } diff --git a/src/Appwrite/Database/Validator/Structure.php b/src/Appwrite/Database/Validator/Structure.php index 5aea6c1b3b..58a4eeadd2 100644 --- a/src/Appwrite/Database/Validator/Structure.php +++ b/src/Appwrite/Database/Validator/Structure.php @@ -4,6 +4,7 @@ namespace Appwrite\Database\Validator; use Appwrite\Database\Database; use Appwrite\Database\Document; +use Appwrite\Network\Validator as NetworkValidator; use Utopia\Validator; class Structure extends Validator @@ -187,16 +188,16 @@ class Structure extends Validator $validator = new Validator\Boolean(); break; case self::RULE_TYPE_EMAIL: - $validator = new Validator\Email(); + $validator = new NetworkValidator\Email(); break; case self::RULE_TYPE_URL: - $validator = new Validator\URL(); + $validator = new NetworkValidator\URL(); break; case self::RULE_TYPE_IP: - $validator = new Validator\IP(); + $validator = new NetworkValidator\IP(); break; case self::RULE_TYPE_WILDCARD: - $validator = new Validator\Mock(); + $validator = new Validator\Wildcard(); break; case self::RULE_TYPE_DOCUMENT: $validator = new Collection($this->database, (isset($rule['list'])) ? $rule['list'] : []); @@ -285,4 +286,28 @@ class Structure extends Validator { return $this->database->getDocument($id); } + + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_OBJECT; + } } diff --git a/src/Appwrite/Database/Validator/UID.php b/src/Appwrite/Database/Validator/UID.php index 4cc3f1d5b2..8e60ec0632 100644 --- a/src/Appwrite/Database/Validator/UID.php +++ b/src/Appwrite/Database/Validator/UID.php @@ -43,4 +43,28 @@ class UID extends Validator return true; } + + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_STRING; + } } diff --git a/src/Appwrite/Network/Validator/CNAME.php b/src/Appwrite/Network/Validator/CNAME.php index c2adfdddde..12b88908f7 100644 --- a/src/Appwrite/Network/Validator/CNAME.php +++ b/src/Appwrite/Network/Validator/CNAME.php @@ -54,4 +54,28 @@ class CNAME extends Validator return false; } + + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_STRING; + } } diff --git a/src/Appwrite/Network/Validator/Domain.php b/src/Appwrite/Network/Validator/Domain.php index 0d5def06c6..8a70ec8b03 100644 --- a/src/Appwrite/Network/Validator/Domain.php +++ b/src/Appwrite/Network/Validator/Domain.php @@ -51,4 +51,28 @@ class Domain extends Validator return true; } + + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_STRING; + } } diff --git a/src/Appwrite/Network/Validator/Email.php b/src/Appwrite/Network/Validator/Email.php index ca9ba1d53d..ab3a324ea1 100644 --- a/src/Appwrite/Network/Validator/Email.php +++ b/src/Appwrite/Network/Validator/Email.php @@ -25,18 +25,6 @@ class Email extends Validator return 'Value must be a valid email address'; } - /** - * Get Type - * - * Returns validator type. - * - * @return string - */ - public function getType() - { - return 'string'; - } - /** * Is valid * @@ -53,4 +41,28 @@ class Email extends Validator return true; } + + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_STRING; + } } diff --git a/src/Appwrite/Network/Validator/Host.php b/src/Appwrite/Network/Validator/Host.php index f746ecd752..b0f8b23073 100644 --- a/src/Appwrite/Network/Validator/Host.php +++ b/src/Appwrite/Network/Validator/Host.php @@ -35,18 +35,6 @@ class Host extends Validator return 'URL host must be one of: ' . \implode(', ', $this->whitelist); } - /** - * Get Type - * - * Returns validator type. - * - * @return string - */ - public function getType() - { - return 'string'; - } - /** * Is valid * @@ -69,4 +57,28 @@ class Host extends Validator return false; } + + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_STRING; + } } diff --git a/src/Appwrite/Network/Validator/IP.php b/src/Appwrite/Network/Validator/IP.php index 523147eb2d..84689b3ff7 100644 --- a/src/Appwrite/Network/Validator/IP.php +++ b/src/Appwrite/Network/Validator/IP.php @@ -51,18 +51,6 @@ class IP extends Validator return 'Value must be a valid IP address'; } - /** - * Get Type - * - * Returns validator type. - * - * @return string - */ - public function getType() - { - return 'string'; - } - /** * Is valid * @@ -99,4 +87,28 @@ class IP extends Validator return false; } + + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_STRING; + } } diff --git a/src/Appwrite/Network/Validator/Origin.php b/src/Appwrite/Network/Validator/Origin.php index c0afb1f56d..8101d9a30c 100644 --- a/src/Appwrite/Network/Validator/Origin.php +++ b/src/Appwrite/Network/Validator/Origin.php @@ -119,4 +119,28 @@ class Origin extends Validator return false; } + + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_STRING; + } } diff --git a/src/Appwrite/Network/Validator/URL.php b/src/Appwrite/Network/Validator/URL.php index bd1546e111..d26159381c 100644 --- a/src/Appwrite/Network/Validator/URL.php +++ b/src/Appwrite/Network/Validator/URL.php @@ -25,18 +25,6 @@ class URL extends Validator return 'Value must be a valid URL'; } - /** - * Get Type - * - * Returns validator type. - * - * @return string - */ - public function getType() - { - return 'string'; - } - /** * Is valid * @@ -53,4 +41,28 @@ class URL extends Validator return true; } + + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_STRING; + } } diff --git a/src/Appwrite/Specification/Format/OpenAPI3.php b/src/Appwrite/Specification/Format/OpenAPI3.php index f01673d3a5..1e9313ca6f 100644 --- a/src/Appwrite/Specification/Format/OpenAPI3.php +++ b/src/Appwrite/Specification/Format/OpenAPI3.php @@ -251,14 +251,18 @@ class OpenAPI3 extends Format case 'Utopia\Validator\Length': $node['schema']['type'] = 'string'; break; - case 'Utopia\Validator\Host': + case 'Appwrite\Network\Validator\Host': $node['schema']['type'] = 'string'; $node['schema']['format'] = 'url'; $node['schema']['x-example'] = 'https://example.com'; break; case 'Utopia\Validator\WhiteList': /** @var \Utopia\Validator\WhiteList $validator */ - $node['schema']['type'] = 'string'; + $node['schema']['type'] = $validator->getType(); $node['schema']['x-example'] = $validator->getList()[0]; + + if ($validator->getType() === 'integer') { + $node['format'] = 'int32'; + } break; default: $node['schema']['type'] = 'string'; diff --git a/src/Appwrite/Specification/Format/Swagger2.php b/src/Appwrite/Specification/Format/Swagger2.php index 1d92a0ea3c..84ec265550 100644 --- a/src/Appwrite/Specification/Format/Swagger2.php +++ b/src/Appwrite/Specification/Format/Swagger2.php @@ -248,14 +248,18 @@ class Swagger2 extends Format case 'Utopia\Validator\Length': $node['type'] = 'string'; break; - case 'Utopia\Validator\Host': + case 'Appwrite\Network\Validator\Host': $node['type'] = 'string'; $node['format'] = 'url'; $node['x-example'] = 'https://example.com'; break; case 'Utopia\Validator\WhiteList': /** @var \Utopia\Validator\WhiteList $validator */ - $node['type'] = 'string'; + $node['type'] = $validator->getType(); $node['x-example'] = $validator->getList()[0]; + + if ($validator->getType() === 'integer') { + $node['format'] = 'int32'; + } break; default: $node['type'] = 'string'; diff --git a/src/Appwrite/Task/Validator/Cron.php b/src/Appwrite/Task/Validator/Cron.php index 18f427ee7b..544482048e 100644 --- a/src/Appwrite/Task/Validator/Cron.php +++ b/src/Appwrite/Task/Validator/Cron.php @@ -40,4 +40,28 @@ class Cron extends Validator return true; } + + /** + * Is array + * + * Function will return true if object is array. + * + * @return bool + */ + public function isArray(): bool + { + return false; + } + + /** + * Get Type + * + * Returns validator type. + * + * @return string + */ + public function getType(): string + { + return self::TYPE_STRING; + } }