From f2c7387b99ecd4ea39d2d18903c07c2a911a93f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Wed, 15 Feb 2023 13:06:27 +0000 Subject: [PATCH 01/47] Add path keyword --- src/SDK/Language/Dart.php | 3 ++- src/SDK/Language/DotNet.php | 3 ++- src/SDK/Language/Go.php | 3 ++- src/SDK/Language/JS.php | 1 + src/SDK/Language/Kotlin.php | 3 ++- src/SDK/Language/PHP.php | 3 ++- src/SDK/Language/Python.php | 3 ++- src/SDK/Language/Ruby.php | 1 + src/SDK/Language/Swift.php | 1 + 9 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/SDK/Language/Dart.php b/src/SDK/Language/Dart.php index 16c7040925..6e5746a26b 100644 --- a/src/SDK/Language/Dart.php +++ b/src/SDK/Language/Dart.php @@ -103,7 +103,8 @@ public function getKeywords(): array "yield", "required", "extension", - "late" + "late", + "path" ]; } diff --git a/src/SDK/Language/DotNet.php b/src/SDK/Language/DotNet.php index 985453203c..310dae56fc 100644 --- a/src/SDK/Language/DotNet.php +++ b/src/SDK/Language/DotNet.php @@ -129,7 +129,8 @@ public function getKeywords(): array 'when', 'where', 'while', - 'yield' + 'yield', + 'path' ]; } diff --git a/src/SDK/Language/Go.php b/src/SDK/Language/Go.php index ebb4347e60..c4ebbf7f1b 100644 --- a/src/SDK/Language/Go.php +++ b/src/SDK/Language/Go.php @@ -40,7 +40,8 @@ public function getKeywords(): array 'struct', 'type', 'var', - 'default' + 'default', + 'path' ]; } diff --git a/src/SDK/Language/JS.php b/src/SDK/Language/JS.php index 3ed496b240..c41727e36d 100644 --- a/src/SDK/Language/JS.php +++ b/src/SDK/Language/JS.php @@ -105,6 +105,7 @@ public function getKeywords(): array 'while', 'with', 'yield', + 'path' ]; } diff --git a/src/SDK/Language/Kotlin.php b/src/SDK/Language/Kotlin.php index f6a2af02b5..a7a4c5aeaa 100644 --- a/src/SDK/Language/Kotlin.php +++ b/src/SDK/Language/Kotlin.php @@ -86,7 +86,8 @@ public function getKeywords(): array "vararg", "when", "where", - "while" + "while", + "path" ]; } diff --git a/src/SDK/Language/PHP.php b/src/SDK/Language/PHP.php index 527ba6f477..600092a8d5 100644 --- a/src/SDK/Language/PHP.php +++ b/src/SDK/Language/PHP.php @@ -117,7 +117,8 @@ public function getKeywords(): array 'use', 'var', 'while', - 'xor' + 'xor', + 'path' ]; } diff --git a/src/SDK/Language/Python.php b/src/SDK/Language/Python.php index c8d19e639b..e81f1ab0b6 100644 --- a/src/SDK/Language/Python.php +++ b/src/SDK/Language/Python.php @@ -71,7 +71,8 @@ public function getKeywords(): array 'except', 'in', 'raise', - 'async' + 'async', + 'path' ]; } diff --git a/src/SDK/Language/Ruby.php b/src/SDK/Language/Ruby.php index d05021146a..eb50551b06 100644 --- a/src/SDK/Language/Ruby.php +++ b/src/SDK/Language/Ruby.php @@ -74,6 +74,7 @@ public function getKeywords(): array 'until', 'when', 'while', + 'path' ]; } diff --git a/src/SDK/Language/Swift.php b/src/SDK/Language/Swift.php index 9b2e08798d..4aaefc9d5d 100644 --- a/src/SDK/Language/Swift.php +++ b/src/SDK/Language/Swift.php @@ -87,6 +87,7 @@ public function getKeywords(): array "unowned", "weak", "willSet", + "path" ]; } From fcb1ed89274af8a625503f72067f3ce267068c21 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Wed, 3 May 2023 12:44:21 +1200 Subject: [PATCH 02/47] Only allow current user to read/write CLI prefs --- templates/cli/lib/config.js.twig | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/templates/cli/lib/config.js.twig b/templates/cli/lib/config.js.twig index 744013e38c..916865f441 100644 --- a/templates/cli/lib/config.js.twig +++ b/templates/cli/lib/config.js.twig @@ -15,7 +15,6 @@ class Config { const file = fs.readFileSync(this.path).toString(); this.data = JSONbig.parse(file); } catch (e) { - // console.log(`${this.path} not found. Empty data`); this.data = {}; } } @@ -25,7 +24,7 @@ class Config { if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); } - fs.writeFileSync(this.path, JSONbig.stringify(this.data, null, 4)); + fs.writeFileSync(this.path, JSONbig.stringify(this.data, null, 4), { mode: 0o600 }); } get(key) { From 78fcd6851f0b3ac3e8e2daffdb86e6d64deed140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Thu, 11 May 2023 20:29:01 +0000 Subject: [PATCH 03/47] PR changes review --- src/SDK/Language/DotNet.php | 3 +-- src/SDK/Language/Go.php | 3 +-- src/SDK/Language/PHP.php | 3 +-- src/SDK/Language/Python.php | 3 +-- src/SDK/Language/Ruby.php | 3 +-- 5 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/SDK/Language/DotNet.php b/src/SDK/Language/DotNet.php index 310dae56fc..985453203c 100644 --- a/src/SDK/Language/DotNet.php +++ b/src/SDK/Language/DotNet.php @@ -129,8 +129,7 @@ public function getKeywords(): array 'when', 'where', 'while', - 'yield', - 'path' + 'yield' ]; } diff --git a/src/SDK/Language/Go.php b/src/SDK/Language/Go.php index c4ebbf7f1b..ebb4347e60 100644 --- a/src/SDK/Language/Go.php +++ b/src/SDK/Language/Go.php @@ -40,8 +40,7 @@ public function getKeywords(): array 'struct', 'type', 'var', - 'default', - 'path' + 'default' ]; } diff --git a/src/SDK/Language/PHP.php b/src/SDK/Language/PHP.php index 600092a8d5..527ba6f477 100644 --- a/src/SDK/Language/PHP.php +++ b/src/SDK/Language/PHP.php @@ -117,8 +117,7 @@ public function getKeywords(): array 'use', 'var', 'while', - 'xor', - 'path' + 'xor' ]; } diff --git a/src/SDK/Language/Python.php b/src/SDK/Language/Python.php index e81f1ab0b6..c8d19e639b 100644 --- a/src/SDK/Language/Python.php +++ b/src/SDK/Language/Python.php @@ -71,8 +71,7 @@ public function getKeywords(): array 'except', 'in', 'raise', - 'async', - 'path' + 'async' ]; } diff --git a/src/SDK/Language/Ruby.php b/src/SDK/Language/Ruby.php index eb50551b06..48d13a830f 100644 --- a/src/SDK/Language/Ruby.php +++ b/src/SDK/Language/Ruby.php @@ -73,8 +73,7 @@ public function getKeywords(): array 'unless', 'until', 'when', - 'while', - 'path' + 'while' ]; } From cc2cad5b46f4c822d4a730d93f64b3f858716144 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Thu, 11 May 2023 20:29:32 +0000 Subject: [PATCH 04/47] more review changes --- src/SDK/Language/Dart.php | 3 +-- src/SDK/Language/Kotlin.php | 3 +-- src/SDK/Language/Swift.php | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/SDK/Language/Dart.php b/src/SDK/Language/Dart.php index 6e5746a26b..16c7040925 100644 --- a/src/SDK/Language/Dart.php +++ b/src/SDK/Language/Dart.php @@ -103,8 +103,7 @@ public function getKeywords(): array "yield", "required", "extension", - "late", - "path" + "late" ]; } diff --git a/src/SDK/Language/Kotlin.php b/src/SDK/Language/Kotlin.php index a7a4c5aeaa..f6a2af02b5 100644 --- a/src/SDK/Language/Kotlin.php +++ b/src/SDK/Language/Kotlin.php @@ -86,8 +86,7 @@ public function getKeywords(): array "vararg", "when", "where", - "while", - "path" + "while" ]; } diff --git a/src/SDK/Language/Swift.php b/src/SDK/Language/Swift.php index 4aaefc9d5d..59d5b02c85 100644 --- a/src/SDK/Language/Swift.php +++ b/src/SDK/Language/Swift.php @@ -86,8 +86,7 @@ public function getKeywords(): array "set", "unowned", "weak", - "willSet", - "path" + "willSet" ]; } From 19b9f0e5aea709008ea3ab2977c896ca96b615b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Thu, 11 May 2023 20:31:05 +0000 Subject: [PATCH 05/47] Add reserved keyword to proper languages --- src/SDK/Language/DotNet.php | 3 ++- src/SDK/Language/Kotlin.php | 3 ++- src/SDK/Language/PHP.php | 3 ++- src/SDK/Language/Ruby.php | 3 ++- src/SDK/Language/Swift.php | 2 +- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/SDK/Language/DotNet.php b/src/SDK/Language/DotNet.php index 985453203c..310dae56fc 100644 --- a/src/SDK/Language/DotNet.php +++ b/src/SDK/Language/DotNet.php @@ -129,7 +129,8 @@ public function getKeywords(): array 'when', 'where', 'while', - 'yield' + 'yield', + 'path' ]; } diff --git a/src/SDK/Language/Kotlin.php b/src/SDK/Language/Kotlin.php index f6a2af02b5..a7a4c5aeaa 100644 --- a/src/SDK/Language/Kotlin.php +++ b/src/SDK/Language/Kotlin.php @@ -86,7 +86,8 @@ public function getKeywords(): array "vararg", "when", "where", - "while" + "while", + "path" ]; } diff --git a/src/SDK/Language/PHP.php b/src/SDK/Language/PHP.php index 527ba6f477..600092a8d5 100644 --- a/src/SDK/Language/PHP.php +++ b/src/SDK/Language/PHP.php @@ -117,7 +117,8 @@ public function getKeywords(): array 'use', 'var', 'while', - 'xor' + 'xor', + 'path' ]; } diff --git a/src/SDK/Language/Ruby.php b/src/SDK/Language/Ruby.php index 48d13a830f..eb50551b06 100644 --- a/src/SDK/Language/Ruby.php +++ b/src/SDK/Language/Ruby.php @@ -73,7 +73,8 @@ public function getKeywords(): array 'unless', 'until', 'when', - 'while' + 'while', + 'path' ]; } diff --git a/src/SDK/Language/Swift.php b/src/SDK/Language/Swift.php index 59d5b02c85..9b2e08798d 100644 --- a/src/SDK/Language/Swift.php +++ b/src/SDK/Language/Swift.php @@ -86,7 +86,7 @@ public function getKeywords(): array "set", "unowned", "weak", - "willSet" + "willSet", ]; } From e76d30554f8979e18f4b106e876a47df59a7f30f Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Mon, 19 Jun 2023 17:54:46 +0530 Subject: [PATCH 06/47] feat: enum whitelist --- composer.lock | 160 +++++++++----------- src/SDK/Language/Dart.php | 10 ++ src/SDK/SDK.php | 22 +++ src/Spec/Swagger2.php | 1 + templates/dart/lib/enums.dart.twig | 5 + templates/dart/lib/src/enums/enum.dart.twig | 8 + 6 files changed, 119 insertions(+), 87 deletions(-) create mode 100644 templates/dart/lib/enums.dart.twig create mode 100644 templates/dart/lib/src/enums/enum.dart.twig diff --git a/composer.lock b/composer.lock index eb0e7c2a99..c9f53aca00 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "matthiasmullie/minify", - "version": "1.3.70", + "version": "1.3.71", "source": { "type": "git", "url": "https://github.com/matthiasmullie/minify.git", - "reference": "2807d9f9bece6877577ad44acb5c801bb3ae536b" + "reference": "ae42a47d7fecc1fbb7277b2f2d84c37a33edc3b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/2807d9f9bece6877577ad44acb5c801bb3ae536b", - "reference": "2807d9f9bece6877577ad44acb5c801bb3ae536b", + "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/ae42a47d7fecc1fbb7277b2f2d84c37a33edc3b1", + "reference": "ae42a47d7fecc1fbb7277b2f2d84c37a33edc3b1", "shasum": "" }, "require": { @@ -67,7 +67,7 @@ ], "support": { "issues": "https://github.com/matthiasmullie/minify/issues", - "source": "https://github.com/matthiasmullie/minify/tree/1.3.70" + "source": "https://github.com/matthiasmullie/minify/tree/1.3.71" }, "funding": [ { @@ -75,7 +75,7 @@ "type": "github" } ], - "time": "2022-12-09T12:56:44+00:00" + "time": "2023-04-25T20:33:03+00:00" }, { "name": "matthiasmullie/path-converter", @@ -297,16 +297,16 @@ }, { "name": "twig/twig", - "version": "v3.5.1", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15" + "reference": "7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/a6e0510cc793912b451fd40ab983a1d28f611c15", - "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd", + "reference": "7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd", "shasum": "" }, "require": { @@ -315,15 +315,10 @@ "symfony/polyfill-mbstring": "^1.3" }, "require-dev": { - "psr/container": "^1.0", + "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.5-dev" - } - }, "autoload": { "psr-4": { "Twig\\": "src/" @@ -357,7 +352,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.5.1" + "source": "https://github.com/twigphp/Twig/tree/v3.6.1" }, "funding": [ { @@ -369,22 +364,22 @@ "type": "tidelift" } ], - "time": "2023-02-08T07:49:20+00:00" + "time": "2023-06-08T12:52:13+00:00" } ], "packages-dev": [ { "name": "brianium/paratest", - "version": "v6.9.1", + "version": "v6.10.0", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "51691208db882922c55d6c465be3e7d95028c449" + "reference": "c2243b20bcd99c3f651018d1447144372f39b4fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/51691208db882922c55d6c465be3e7d95028c449", - "reference": "51691208db882922c55d6c465be3e7d95028c449", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/c2243b20bcd99c3f651018d1447144372f39b4fa", + "reference": "c2243b20bcd99c3f651018d1447144372f39b4fa", "shasum": "" }, "require": { @@ -451,7 +446,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v6.9.1" + "source": "https://github.com/paratestphp/paratest/tree/v6.10.0" }, "funding": [ { @@ -463,7 +458,7 @@ "type": "paypal" } ], - "time": "2023-03-03T09:35:17+00:00" + "time": "2023-05-25T13:47:58+00:00" }, { "name": "doctrine/instantiator", @@ -716,16 +711,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.4", + "version": "v4.15.5", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e", + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e", "shasum": "" }, "require": { @@ -766,9 +761,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5" }, - "time": "2023-03-05T19:49:14+00:00" + "time": "2023-05-19T20:20:00+00:00" }, { "name": "phar-io/manifest", @@ -1201,16 +1196,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.6", + "version": "9.6.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b65d59a059d3004a040c16a82e07bbdf6cfdd115" + "reference": "a9aceaf20a682aeacf28d582654a1670d8826778" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b65d59a059d3004a040c16a82e07bbdf6cfdd115", - "reference": "b65d59a059d3004a040c16a82e07bbdf6cfdd115", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a9aceaf20a682aeacf28d582654a1670d8826778", + "reference": "a9aceaf20a682aeacf28d582654a1670d8826778", "shasum": "" }, "require": { @@ -1284,7 +1279,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.6" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.9" }, "funding": [ { @@ -1300,7 +1295,7 @@ "type": "tidelift" } ], - "time": "2023-03-27T11:43:46+00:00" + "time": "2023-06-11T06:13:56+00:00" }, { "name": "psr/container", @@ -1655,16 +1650,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -1709,7 +1704,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -1717,7 +1712,7 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "sebastian/environment", @@ -2378,23 +2373,23 @@ }, { "name": "symfony/console", - "version": "v6.2.8", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "3582d68a64a86ec25240aaa521ec8bc2342b369b" + "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/3582d68a64a86ec25240aaa521ec8bc2342b369b", - "reference": "3582d68a64a86ec25240aaa521ec8bc2342b369b", + "url": "https://api.github.com/repos/symfony/console/zipball/8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", + "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/string": "^5.4|^6.0" }, "conflict": { @@ -2416,12 +2411,6 @@ "symfony/process": "^5.4|^6.0", "symfony/var-dumper": "^5.4|^6.0" }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, "type": "library", "autoload": { "psr-4": { @@ -2454,7 +2443,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.2.8" + "source": "https://github.com/symfony/console/tree/v6.3.0" }, "funding": [ { @@ -2470,20 +2459,20 @@ "type": "tidelift" } ], - "time": "2023-03-29T21:42:15+00:00" + "time": "2023-05-29T12:49:39+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { @@ -2492,7 +2481,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -2521,7 +2510,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -2537,7 +2526,7 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:25:55+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -2706,16 +2695,16 @@ }, { "name": "symfony/process", - "version": "v6.2.8", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "75ed64103df4f6615e15a7fe38b8111099f47416" + "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/75ed64103df4f6615e15a7fe38b8111099f47416", - "reference": "75ed64103df4f6615e15a7fe38b8111099f47416", + "url": "https://api.github.com/repos/symfony/process/zipball/8741e3ed7fe2e91ec099e02446fb86667a0f1628", + "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628", "shasum": "" }, "require": { @@ -2747,7 +2736,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.2.8" + "source": "https://github.com/symfony/process/tree/v6.3.0" }, "funding": [ { @@ -2763,20 +2752,20 @@ "type": "tidelift" } ], - "time": "2023-03-09T16:20:02+00:00" + "time": "2023-05-19T08:06:44+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a" + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", "shasum": "" }, "require": { @@ -2786,13 +2775,10 @@ "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -2832,7 +2818,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" }, "funding": [ { @@ -2848,20 +2834,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/string", - "version": "v6.2.8", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" + "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", + "url": "https://api.github.com/repos/symfony/string/zipball/f2e190ee75ff0f5eced645ec0be5c66fac81f51f", + "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f", "shasum": "" }, "require": { @@ -2872,13 +2858,13 @@ "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", + "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", @@ -2918,7 +2904,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.8" + "source": "https://github.com/symfony/string/tree/v6.3.0" }, "funding": [ { @@ -2934,7 +2920,7 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:06:02+00:00" + "time": "2023-03-21T21:06:29+00:00" }, { "name": "theseer/tokenizer", diff --git a/src/SDK/Language/Dart.php b/src/SDK/Language/Dart.php index 16c7040925..d1366e877f 100644 --- a/src/SDK/Language/Dart.php +++ b/src/SDK/Language/Dart.php @@ -411,6 +411,16 @@ public function getFiles(): array 'destination' => 'lib/src/input_file.dart', 'template' => 'dart/lib/src/input_file.dart.twig', ], + [ + 'scope' => 'enum', + 'destination' => 'lib/src/enums/{{ enum.name | caseSnake }}.dart', + 'template' => 'dart/lib/src/enums/enum.dart.twig', + ], + [ + 'scope' => 'default', + 'destination' => 'lib/enums.dart', + 'template' => 'dart/lib/enums.dart.twig', + ], ]; } diff --git a/src/SDK/SDK.php b/src/SDK/SDK.php index 73a75ce39c..e2badec6f4 100644 --- a/src/SDK/SDK.php +++ b/src/SDK/SDK.php @@ -634,6 +634,28 @@ public function generate(string $target): void } } break; + case 'enum': + foreach ($this->spec->getServices() as $key => $service) { + $methods = $this->spec->getMethods($key); + + + foreach ($methods as $method) { + $params['method'] = $method; + $parameters = $method['parameters']['path']; + + foreach ($parameters as $parameter) { + // Check if the enum field is defined + if ($parameter['enum'] != null) { + $params['enum'] = [ + 'name' => $parameter['name'], + 'enum' => $parameter['enum'], + ]; + $this->render($template, $destination, $block, $params, $minify); + } + } + } + } + break; } } } diff --git a/src/Spec/Swagger2.php b/src/Spec/Swagger2.php index 202e7dc43a..d19cefc905 100644 --- a/src/Spec/Swagger2.php +++ b/src/Spec/Swagger2.php @@ -227,6 +227,7 @@ public function getMethods($service) $output['parameters']['header'][] = $param; break; case 'path': + $param['enum'] = $parameter['enum'] ?? null; $output['parameters']['path'][] = $param; break; case 'query': diff --git a/templates/dart/lib/enums.dart.twig b/templates/dart/lib/enums.dart.twig new file mode 100644 index 0000000000..e075e3f0e4 --- /dev/null +++ b/templates/dart/lib/enums.dart.twig @@ -0,0 +1,5 @@ +library {{ language.params.packageName }}.enums; + +{% for enum in spec.enum %} +part 'src/enum/{{enum.name | caseSnake}}.dart'; +{% endfor %} \ No newline at end of file diff --git a/templates/dart/lib/src/enums/enum.dart.twig b/templates/dart/lib/src/enums/enum.dart.twig new file mode 100644 index 0000000000..40b3d51e18 --- /dev/null +++ b/templates/dart/lib/src/enums/enum.dart.twig @@ -0,0 +1,8 @@ +part of {{ language.params.packageName }}.enums; + +enum {{ enum.name | caseUcfirst | overrideIdentifier }} { + {% for value in enum.enum %} + {{value}}{% if not loop.last %}, +{% endif %} + {% endfor %} +} \ No newline at end of file From 11441b61438e22ba77cc82de15169d70bee4ab13 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Wed, 12 Jul 2023 13:06:11 +0530 Subject: [PATCH 07/47] (chore): fix common name renders --- src/SDK/Language.php | 21 +++++++++++++++++++++ src/SDK/SDK.php | 7 +++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/SDK/Language.php b/src/SDK/Language.php index 0a7a259f7a..2c47493d76 100644 --- a/src/SDK/Language.php +++ b/src/SDK/Language.php @@ -97,4 +97,25 @@ protected function toCamelCase($str): string $str = str_replace(" ", "", $str); return lcfirst($str); } + + public function getEnumType(string $service, string $method): string + { + switch ($service) { + case 'account': + switch ($method) { + case 'createOAuth2Session': + return 'Provider'; + } + case 'avatars': + switch ($method) { + case 'getBrowser': + return 'Browser'; + case 'getCreditCard': + return 'CreditCard'; + case 'getFlag': + return 'Flag'; + } + } + throw new \Exception('Enum type not found for service: ' . $service . ' method: ' . $method); + } } diff --git a/src/SDK/SDK.php b/src/SDK/SDK.php index e2badec6f4..ffbe165e46 100644 --- a/src/SDK/SDK.php +++ b/src/SDK/SDK.php @@ -140,6 +140,9 @@ public function __construct(Language $language, Spec $spec) $this->twig->addFilter(new TwigFilter('typeName', function ($value) { return $this->language->getTypeName($value); }, ['is_safe' => ['html']])); + $this->twig->addFilter(new TwigFilter('getEnumType', function ($service, $method) { + return $this->language->getEnumType($service, $method); + }, ['is_safe' => ['html']])); $this->twig->addFilter(new TwigFilter('paramDefault', function ($value) { return $this->language->getParamDefault($value); }, ['is_safe' => ['html']])); @@ -647,9 +650,9 @@ public function generate(string $target): void // Check if the enum field is defined if ($parameter['enum'] != null) { $params['enum'] = [ - 'name' => $parameter['name'], + 'name' => $this->language->getEnumType($service['name'], $method['name']), 'enum' => $parameter['enum'], - ]; + ]; $this->render($template, $destination, $block, $params, $minify); } } From 3aff6bf83214f388096c188ee5bf2c0b50460699 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Wed, 12 Jul 2023 17:11:17 +0530 Subject: [PATCH 08/47] chore: add support for node,web,php,web,flutter --- src/SDK/Language/Flutter.php | 10 ++++++++++ src/SDK/Language/Node.php | 5 +++++ src/SDK/Language/PHP.php | 5 +++++ src/SDK/Language/Python.php | 5 +++++ src/SDK/Language/Web.php | 5 +++++ templates/dart/lib/enums.dart.twig | 2 +- templates/node/lib/enums/enum.js.twig | 8 ++++++++ templates/php/src/Enums/Enum.php.twig | 9 +++++++++ templates/python/package/enums/enum.py.twig | 6 ++++++ templates/web/src/enums/enum.ts.twig | 5 +++++ 10 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 templates/node/lib/enums/enum.js.twig create mode 100644 templates/php/src/Enums/Enum.php.twig create mode 100644 templates/python/package/enums/enum.py.twig create mode 100644 templates/web/src/enums/enum.ts.twig diff --git a/src/SDK/Language/Flutter.php b/src/SDK/Language/Flutter.php index 1b5dea3792..c9eebf412b 100644 --- a/src/SDK/Language/Flutter.php +++ b/src/SDK/Language/Flutter.php @@ -250,6 +250,16 @@ public function getFiles(): array 'destination' => '.travis.yml', 'template' => 'flutter/.travis.yml.twig', ], + [ + 'scope' => 'enum', + 'destination' => 'lib/src/enums/{{ enum.name | caseSnake }}.dart', + 'template' => 'dart/lib/src/enums/enum.dart.twig', + ], + [ + 'scope' => 'default', + 'destination' => 'lib/enums.dart', + 'template' => 'dart/lib/enums.dart.twig', + ], ]; } } diff --git a/src/SDK/Language/Node.php b/src/SDK/Language/Node.php index 435e1cce0d..2f135e18ec 100644 --- a/src/SDK/Language/Node.php +++ b/src/SDK/Language/Node.php @@ -126,6 +126,11 @@ public function getFiles(): array 'destination' => '.travis.yml', 'template' => 'node/.travis.yml.twig', ], + [ + 'scope' => 'enum', + 'destination' => 'lib/enums/{{ enum.name | caseDash }}.js', + 'template' => 'node/lib/enums/enum.js.twig', + ], ]; } diff --git a/src/SDK/Language/PHP.php b/src/SDK/Language/PHP.php index 3f69688142..67736ea2a3 100644 --- a/src/SDK/Language/PHP.php +++ b/src/SDK/Language/PHP.php @@ -211,6 +211,11 @@ public function getFiles(): array 'destination' => '/src/{{ spec.title | caseUcfirst}}/Services/{{service.name | caseUcfirst}}.php', 'template' => 'php/src/Services/Service.php.twig', ], + [ + 'scope' => 'enum', + 'destination' => '/src/{{ spec.title | caseUcfirst}}/Enums/{{ enum.name | caseUcfirst }}.php', + 'template' => 'php/src/Enums/Enum.php.twig', + ], ]; } diff --git a/src/SDK/Language/Python.php b/src/SDK/Language/Python.php index c8d19e639b..e0901a60bd 100644 --- a/src/SDK/Language/Python.php +++ b/src/SDK/Language/Python.php @@ -184,6 +184,11 @@ public function getFiles(): array 'destination' => '.travis.yml', 'template' => 'python/.travis.yml.twig', ], + [ + 'scope' => 'enum', + 'destination' => '{{ spec.title | caseSnake}}/enums/{{ enum.name | caseSnake }}.py', + 'template' => 'python/package/enums/enum.py.twig', + ], ]; } diff --git a/src/SDK/Language/Web.php b/src/SDK/Language/Web.php index 26ec511361..d6838af6cb 100644 --- a/src/SDK/Language/Web.php +++ b/src/SDK/Language/Web.php @@ -115,6 +115,11 @@ public function getFiles(): array 'destination' => '.travis.yml', 'template' => 'web/.travis.yml.twig', ], + [ + 'scope' => 'enum', + 'destination' => 'src/enums/{{ enum.name | caseDash }}.ts', + 'template' => 'web/src/enums/enum.ts.twig', + ], ]; } diff --git a/templates/dart/lib/enums.dart.twig b/templates/dart/lib/enums.dart.twig index e075e3f0e4..b9962b45fd 100644 --- a/templates/dart/lib/enums.dart.twig +++ b/templates/dart/lib/enums.dart.twig @@ -1,5 +1,5 @@ library {{ language.params.packageName }}.enums; {% for enum in spec.enum %} -part 'src/enum/{{enum.name | caseSnake}}.dart'; +part 'src/enums/{{enum.name | caseSnake}}.dart'; {% endfor %} \ No newline at end of file diff --git a/templates/node/lib/enums/enum.js.twig b/templates/node/lib/enums/enum.js.twig new file mode 100644 index 0000000000..7f8f5106c0 --- /dev/null +++ b/templates/node/lib/enums/enum.js.twig @@ -0,0 +1,8 @@ +const {{ enum.name | caseUcfirst | overrideIdentifier }} = { + {% for value in enum.enum %} + {{value}}: '{{ value | caseLower | overrideIdentifier }}' {% if not loop.last %}, + {% endif %} + {% endfor %} +} + +module.exports = {{ enum.name | caseUcfirst | overrideIdentifier }}; \ No newline at end of file diff --git a/templates/php/src/Enums/Enum.php.twig b/templates/php/src/Enums/Enum.php.twig new file mode 100644 index 0000000000..a0304b38e7 --- /dev/null +++ b/templates/php/src/Enums/Enum.php.twig @@ -0,0 +1,9 @@ + Date: Thu, 13 Jul 2023 19:05:35 +0530 Subject: [PATCH 09/47] Update src/SDK/SDK.php Co-authored-by: Eldad A. Fux --- src/SDK/SDK.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/SDK/SDK.php b/src/SDK/SDK.php index ffbe165e46..6d5a513a06 100644 --- a/src/SDK/SDK.php +++ b/src/SDK/SDK.php @@ -641,7 +641,6 @@ public function generate(string $target): void foreach ($this->spec->getServices() as $key => $service) { $methods = $this->spec->getMethods($key); - foreach ($methods as $method) { $params['method'] = $method; $parameters = $method['parameters']['path']; From fde85780a860a278e7db3b17b76827b0f7e2863c Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Thu, 13 Jul 2023 22:04:54 +0530 Subject: [PATCH 10/47] chore: remove appwrite specific method and fetch enum name from swagger --- src/SDK/Language.php | 20 -------------------- src/SDK/SDK.php | 2 +- src/Spec/Swagger2.php | 1 + 3 files changed, 2 insertions(+), 21 deletions(-) diff --git a/src/SDK/Language.php b/src/SDK/Language.php index 2c47493d76..3c6ec4a484 100644 --- a/src/SDK/Language.php +++ b/src/SDK/Language.php @@ -98,24 +98,4 @@ protected function toCamelCase($str): string return lcfirst($str); } - public function getEnumType(string $service, string $method): string - { - switch ($service) { - case 'account': - switch ($method) { - case 'createOAuth2Session': - return 'Provider'; - } - case 'avatars': - switch ($method) { - case 'getBrowser': - return 'Browser'; - case 'getCreditCard': - return 'CreditCard'; - case 'getFlag': - return 'Flag'; - } - } - throw new \Exception('Enum type not found for service: ' . $service . ' method: ' . $method); - } } diff --git a/src/SDK/SDK.php b/src/SDK/SDK.php index 6d5a513a06..ec05838f91 100644 --- a/src/SDK/SDK.php +++ b/src/SDK/SDK.php @@ -649,7 +649,7 @@ public function generate(string $target): void // Check if the enum field is defined if ($parameter['enum'] != null) { $params['enum'] = [ - 'name' => $this->language->getEnumType($service['name'], $method['name']), + 'name' => $parameter['enum-name'], 'enum' => $parameter['enum'], ]; $this->render($template, $destination, $block, $params, $minify); diff --git a/src/Spec/Swagger2.php b/src/Spec/Swagger2.php index 9da55eb475..e6f1dafdb2 100644 --- a/src/Spec/Swagger2.php +++ b/src/Spec/Swagger2.php @@ -228,6 +228,7 @@ public function getMethods($service) break; case 'path': $param['enum'] = $parameter['enum'] ?? null; + $param['enum-name'] = $parameter['x-enum-name'] ?? null; $output['parameters']['path'][] = $param; break; case 'query': From 00019e2c3b33a91f36a960961369180a46533b31 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Fri, 14 Jul 2023 10:17:29 +0530 Subject: [PATCH 11/47] chore: fix casing in enums --- src/SDK/SDK.php | 7 ++----- templates/dart/lib/src/enums/enum.dart.twig | 2 +- templates/node/lib/enums/enum.js.twig | 2 +- templates/php/src/Enums/Enum.php.twig | 7 ++++--- templates/python/package/enums/enum.py.twig | 2 +- templates/web/src/enums/enum.ts.twig | 2 +- 6 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/SDK/SDK.php b/src/SDK/SDK.php index ec05838f91..3da78f08e4 100644 --- a/src/SDK/SDK.php +++ b/src/SDK/SDK.php @@ -95,10 +95,10 @@ public function __construct(Language $language, Spec $spec) $this->twig->addExtension(new DebugExtension()); $this->twig->addFilter(new TwigFilter('caseLower', function ($value) { - return strtolower((string)$value); + return strtolower(str_replace('-', '', (string)$value)); })); $this->twig->addFilter(new TwigFilter('caseUpper', function ($value) { - return strtoupper((string)$value); + return strtoupper(str_replace('-', '', (string)$value)); })); $this->twig->addFilter(new TwigFilter('caseUcfirst', function ($value) { return ucfirst($this->helperCamelCase($value)); @@ -140,9 +140,6 @@ public function __construct(Language $language, Spec $spec) $this->twig->addFilter(new TwigFilter('typeName', function ($value) { return $this->language->getTypeName($value); }, ['is_safe' => ['html']])); - $this->twig->addFilter(new TwigFilter('getEnumType', function ($service, $method) { - return $this->language->getEnumType($service, $method); - }, ['is_safe' => ['html']])); $this->twig->addFilter(new TwigFilter('paramDefault', function ($value) { return $this->language->getParamDefault($value); }, ['is_safe' => ['html']])); diff --git a/templates/dart/lib/src/enums/enum.dart.twig b/templates/dart/lib/src/enums/enum.dart.twig index 40b3d51e18..4e2a088d64 100644 --- a/templates/dart/lib/src/enums/enum.dart.twig +++ b/templates/dart/lib/src/enums/enum.dart.twig @@ -2,7 +2,7 @@ part of {{ language.params.packageName }}.enums; enum {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - {{value}}{% if not loop.last %}, + {{value | caseCamel}}{% if not loop.last %}, {% endif %} {% endfor %} } \ No newline at end of file diff --git a/templates/node/lib/enums/enum.js.twig b/templates/node/lib/enums/enum.js.twig index 7f8f5106c0..e6e2f0b94c 100644 --- a/templates/node/lib/enums/enum.js.twig +++ b/templates/node/lib/enums/enum.js.twig @@ -1,6 +1,6 @@ const {{ enum.name | caseUcfirst | overrideIdentifier }} = { {% for value in enum.enum %} - {{value}}: '{{ value | caseLower | overrideIdentifier }}' {% if not loop.last %}, + {{ value | caseLower | overrideIdentifier }}: '{{value}}' {% if not loop.last %}, {% endif %} {% endfor %} } diff --git a/templates/php/src/Enums/Enum.php.twig b/templates/php/src/Enums/Enum.php.twig index a0304b38e7..9aa69ec1b5 100644 --- a/templates/php/src/Enums/Enum.php.twig +++ b/templates/php/src/Enums/Enum.php.twig @@ -2,8 +2,9 @@ namespace {{ spec.title | caseUcfirst }}\Enums; -enum {{ enum.name | caseUcfirst | overrideIdentifier }} { +class {{ enum.name | caseUcfirst | overrideIdentifier }} +{ {% for value in enum.enum %} - case {{value}}; + public const {{value | caseUpper | overrideIdentifier}} = '{{value}}'; {% endfor %} -} \ No newline at end of file +} diff --git a/templates/python/package/enums/enum.py.twig b/templates/python/package/enums/enum.py.twig index 2b09bf574e..8966a23030 100644 --- a/templates/python/package/enums/enum.py.twig +++ b/templates/python/package/enums/enum.py.twig @@ -2,5 +2,5 @@ from enum import Enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(Enum): {% for value in enum.enum %} - {{value}} + {{value | caseUpper | overrideIdentifier}} = {{ value }} {% endfor %} \ No newline at end of file diff --git a/templates/web/src/enums/enum.ts.twig b/templates/web/src/enums/enum.ts.twig index ca48f0f0ca..854c57ebc6 100644 --- a/templates/web/src/enums/enum.ts.twig +++ b/templates/web/src/enums/enum.ts.twig @@ -1,5 +1,5 @@ export enum {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - {{ value | caseUcfirst | overrideIdentifier }}, + {{ value | caseUcfirst | overrideIdentifier }} = '{{ value }}', {% endfor %} } \ No newline at end of file From 2b65a0265473e9e6fe55767540e3374c0183154e Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Fri, 14 Jul 2023 11:29:17 +0530 Subject: [PATCH 12/47] chore: add enums deno --- src/SDK/Language/Deno.php | 5 +++++ templates/deno/src/enums/enum.ts.twig | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 templates/deno/src/enums/enum.ts.twig diff --git a/src/SDK/Language/Deno.php b/src/SDK/Language/Deno.php index 1fdef0c0da..d67a757dc1 100644 --- a/src/SDK/Language/Deno.php +++ b/src/SDK/Language/Deno.php @@ -93,6 +93,11 @@ public function getFiles(): array 'destination' => 'docs/examples/{{service.name | caseLower}}/{{method.name | caseDash}}.md', 'template' => 'deno/docs/example.md.twig', ], + [ + 'scope' => 'enum', + 'destination' => 'src/enums/{{ enum.name | caseCamel }}.ts', + 'template' => 'deno/src/enums/enum.ts.twig', + ], ]; } diff --git a/templates/deno/src/enums/enum.ts.twig b/templates/deno/src/enums/enum.ts.twig new file mode 100644 index 0000000000..e706a1a68d --- /dev/null +++ b/templates/deno/src/enums/enum.ts.twig @@ -0,0 +1,5 @@ +export enum {{ enum.name | caseUcfirst | overrideIdentifier }} { + {% for value in enum.enum %} + {{ value | caseUcfirst | overrideIdentifier }} = '{{ value }}', +{% endfor %} +} \ No newline at end of file From c8b9859d399413b98ac13ab1d60fa706d27a8b72 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Fri, 14 Jul 2023 20:50:46 +0530 Subject: [PATCH 13/47] chore: use replace instead of str_replace --- src/SDK/SDK.php | 9 ++++----- src/Spec/Swagger2.php | 2 +- templates/dart/lib/src/enums/enum.dart.twig | 2 +- templates/deno/src/enums/enum.ts.twig | 2 +- templates/node/lib/enums/enum.js.twig | 2 +- templates/php/src/Enums/Enum.php.twig | 2 +- templates/python/package/enums/enum.py.twig | 2 +- templates/web/src/enums/enum.ts.twig | 2 +- 8 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/SDK/SDK.php b/src/SDK/SDK.php index 3da78f08e4..88be7ae9ed 100644 --- a/src/SDK/SDK.php +++ b/src/SDK/SDK.php @@ -95,10 +95,10 @@ public function __construct(Language $language, Spec $spec) $this->twig->addExtension(new DebugExtension()); $this->twig->addFilter(new TwigFilter('caseLower', function ($value) { - return strtolower(str_replace('-', '', (string)$value)); + return strtolower((string)$value); })); $this->twig->addFilter(new TwigFilter('caseUpper', function ($value) { - return strtoupper(str_replace('-', '', (string)$value)); + return strtoupper((string)$value); })); $this->twig->addFilter(new TwigFilter('caseUcfirst', function ($value) { return ucfirst($this->helperCamelCase($value)); @@ -639,15 +639,14 @@ public function generate(string $target): void $methods = $this->spec->getMethods($key); foreach ($methods as $method) { - $params['method'] = $method; $parameters = $method['parameters']['path']; foreach ($parameters as $parameter) { // Check if the enum field is defined - if ($parameter['enum'] != null) { + if ($parameter['enum-values'] != null) { $params['enum'] = [ 'name' => $parameter['enum-name'], - 'enum' => $parameter['enum'], + 'enum' => $parameter['enum-values'], ]; $this->render($template, $destination, $block, $params, $minify); } diff --git a/src/Spec/Swagger2.php b/src/Spec/Swagger2.php index e6f1dafdb2..3ee4ccfa9a 100644 --- a/src/Spec/Swagger2.php +++ b/src/Spec/Swagger2.php @@ -227,7 +227,7 @@ public function getMethods($service) $output['parameters']['header'][] = $param; break; case 'path': - $param['enum'] = $parameter['enum'] ?? null; + $param['enum-values'] = $parameter['enum'] ?? null; $param['enum-name'] = $parameter['x-enum-name'] ?? null; $output['parameters']['path'][] = $param; break; diff --git a/templates/dart/lib/src/enums/enum.dart.twig b/templates/dart/lib/src/enums/enum.dart.twig index 4e2a088d64..8b857c0800 100644 --- a/templates/dart/lib/src/enums/enum.dart.twig +++ b/templates/dart/lib/src/enums/enum.dart.twig @@ -2,7 +2,7 @@ part of {{ language.params.packageName }}.enums; enum {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - {{value | caseCamel}}{% if not loop.last %}, + {{value | caseCamel | replace({'-': ''})}}{% if not loop.last %}, {% endif %} {% endfor %} } \ No newline at end of file diff --git a/templates/deno/src/enums/enum.ts.twig b/templates/deno/src/enums/enum.ts.twig index e706a1a68d..74cb8e88af 100644 --- a/templates/deno/src/enums/enum.ts.twig +++ b/templates/deno/src/enums/enum.ts.twig @@ -1,5 +1,5 @@ export enum {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - {{ value | caseUcfirst | overrideIdentifier }} = '{{ value }}', + {{ value | caseUcfirst | replace({'-': ''}) }} = '{{ value }}', {% endfor %} } \ No newline at end of file diff --git a/templates/node/lib/enums/enum.js.twig b/templates/node/lib/enums/enum.js.twig index e6e2f0b94c..5e153247b5 100644 --- a/templates/node/lib/enums/enum.js.twig +++ b/templates/node/lib/enums/enum.js.twig @@ -1,6 +1,6 @@ const {{ enum.name | caseUcfirst | overrideIdentifier }} = { {% for value in enum.enum %} - {{ value | caseLower | overrideIdentifier }}: '{{value}}' {% if not loop.last %}, + {{ value | caseLower | replace({'-': ''})}}: '{{value}}' {% if not loop.last %}, {% endif %} {% endfor %} } diff --git a/templates/php/src/Enums/Enum.php.twig b/templates/php/src/Enums/Enum.php.twig index 9aa69ec1b5..f60d9e8b68 100644 --- a/templates/php/src/Enums/Enum.php.twig +++ b/templates/php/src/Enums/Enum.php.twig @@ -5,6 +5,6 @@ namespace {{ spec.title | caseUcfirst }}\Enums; class {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - public const {{value | caseUpper | overrideIdentifier}} = '{{value}}'; + public const {{value | caseUpper | replace({'-': ''})}} = '{{value}}'; {% endfor %} } diff --git a/templates/python/package/enums/enum.py.twig b/templates/python/package/enums/enum.py.twig index 8966a23030..95c11cfaa9 100644 --- a/templates/python/package/enums/enum.py.twig +++ b/templates/python/package/enums/enum.py.twig @@ -2,5 +2,5 @@ from enum import Enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(Enum): {% for value in enum.enum %} - {{value | caseUpper | overrideIdentifier}} = {{ value }} + {{value | caseUpper | replace({'-': ''})}} = "{{ value }}" {% endfor %} \ No newline at end of file diff --git a/templates/web/src/enums/enum.ts.twig b/templates/web/src/enums/enum.ts.twig index 854c57ebc6..aa5a197ad8 100644 --- a/templates/web/src/enums/enum.ts.twig +++ b/templates/web/src/enums/enum.ts.twig @@ -1,5 +1,5 @@ export enum {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - {{ value | caseUcfirst | overrideIdentifier }} = '{{ value }}', + {{ value | caseUcfirst | replace({'-': ''})}} = '{{ value }}', {% endfor %} } \ No newline at end of file From 4b2abbfefb68145378719098308c7fb114f80844 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Fri, 14 Jul 2023 21:11:06 +0530 Subject: [PATCH 14/47] chore: add support for android and kotlin --- src/SDK/Language/Android.php | 5 +++++ src/SDK/Language/Kotlin.php | 5 +++++ .../library/src/main/java/io/appwrite/enums/Enum.kt.twig | 9 +++++++++ .../src/main/kotlin/io/appwrite/enums/Enum.kt.twig | 9 +++++++++ 4 files changed, 28 insertions(+) create mode 100644 templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig create mode 100644 templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig diff --git a/src/SDK/Language/Android.php b/src/SDK/Language/Android.php index 5d3e90bb06..4421bfa909 100644 --- a/src/SDK/Language/Android.php +++ b/src/SDK/Language/Android.php @@ -387,6 +387,11 @@ public function getFiles(): array 'destination' => 'library/src/main/java/io/appwrite/models/{{ definition.name | caseUcfirst }}.kt', 'template' => '/android/library/src/main/java/io/appwrite/models/Model.kt.twig', ], + [ + 'scope' => 'enum', + 'destination' => 'library/src/main/java/io/appwrite/enums/{{ enum.name | caseUcfirst }}.kt', + 'template' => '/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig', + ], ]; } } diff --git a/src/SDK/Language/Kotlin.php b/src/SDK/Language/Kotlin.php index f6a2af02b5..82b02372e5 100644 --- a/src/SDK/Language/Kotlin.php +++ b/src/SDK/Language/Kotlin.php @@ -418,6 +418,11 @@ public function getFiles(): array 'destination' => '/src/main/kotlin/{{ sdk.namespace | caseSlash }}/models/{{ definition.name | caseUcfirst }}.kt', 'template' => '/kotlin/src/main/kotlin/io/appwrite/models/Model.kt.twig', ], + [ + 'scope' => 'enum', + 'destination' => '/src/main/kotlin/{{ sdk.namespace | caseSlash }}/enums/{{ enum.name | caseUcfirst }}.kt', + 'template' => '/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig', + ], ]; } diff --git a/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig b/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig new file mode 100644 index 0000000000..39a5da515e --- /dev/null +++ b/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig @@ -0,0 +1,9 @@ +package {{ sdk.namespace | caseDot }}.enums + +enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(val value: String) { +{% for value in enum.enum %} + {{value | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, +{% endif %} +{% endfor %} + +} \ No newline at end of file diff --git a/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig b/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig new file mode 100644 index 0000000000..39a5da515e --- /dev/null +++ b/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig @@ -0,0 +1,9 @@ +package {{ sdk.namespace | caseDot }}.enums + +enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(val value: String) { +{% for value in enum.enum %} + {{value | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, +{% endif %} +{% endfor %} + +} \ No newline at end of file From f3e010fa10e76991d56f77ae8c0fea053c10b8ff Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Sat, 15 Jul 2023 12:06:36 +0530 Subject: [PATCH 15/47] chore: export enums dart fixed --- src/SDK/Language.php | 1 - src/SDK/SDK.php | 1 + src/Spec/Spec.php | 7 +++++++ src/Spec/Swagger2.php | 21 +++++++++++++++++++++ templates/dart/lib/enums.dart.twig | 6 +++--- templates/dart/lib/src/enums/enum.dart.twig | 6 +++++- 6 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/SDK/Language.php b/src/SDK/Language.php index 3c6ec4a484..0a7a259f7a 100644 --- a/src/SDK/Language.php +++ b/src/SDK/Language.php @@ -97,5 +97,4 @@ protected function toCamelCase($str): string $str = str_replace(" ", "", $str); return lcfirst($str); } - } diff --git a/src/SDK/SDK.php b/src/SDK/SDK.php index 88be7ae9ed..deeaa2a59d 100644 --- a/src/SDK/SDK.php +++ b/src/SDK/SDK.php @@ -556,6 +556,7 @@ public function generate(string $target): void 'params' => $this->language->getParams(), ], 'sdk' => $this->getParams(), + 'enums' => $this->spec->getEnumNames(), ]; foreach ($this->language->getFiles() as $file) { diff --git a/src/Spec/Spec.php b/src/Spec/Spec.php index 6ffbbba530..cf22cfa18f 100644 --- a/src/Spec/Spec.php +++ b/src/Spec/Spec.php @@ -164,4 +164,11 @@ public function setAttribute($key, $value, $type = self::SET_TYPE_ASSIGN) return $this; } + + /** + * Get EnumNames + * + * @return array + */ + abstract public function getEnumNames(); } diff --git a/src/Spec/Swagger2.php b/src/Spec/Swagger2.php index 3ee4ccfa9a..95c502d0bd 100644 --- a/src/Spec/Swagger2.php +++ b/src/Spec/Swagger2.php @@ -343,4 +343,25 @@ public function getDefinitions() } return $list; } + + /** + * @return array + */ + public function getEnumNames(): array + { + $list = []; + + foreach ($this->getServices() as $key => $service) { + foreach ($this->getMethods($key) as $method) { + if (isset($method['parameters']) && is_array($method['parameters'])) { + foreach ($method['parameters']['path'] as $parameter) { + if (isset($parameter['enum-name'])) { + $list[] = $parameter['enum-name']; + } + } + } + } + } + return $list; + } } diff --git a/templates/dart/lib/enums.dart.twig b/templates/dart/lib/enums.dart.twig index b9962b45fd..3932e5fe02 100644 --- a/templates/dart/lib/enums.dart.twig +++ b/templates/dart/lib/enums.dart.twig @@ -1,5 +1,5 @@ library {{ language.params.packageName }}.enums; -{% for enum in spec.enum %} -part 'src/enums/{{enum.name | caseSnake}}.dart'; -{% endfor %} \ No newline at end of file +{% for enum in enums %} +part 'src/enums/{{enum | caseSnake}}.dart'; +{% endfor %} diff --git a/templates/dart/lib/src/enums/enum.dart.twig b/templates/dart/lib/src/enums/enum.dart.twig index 8b857c0800..91bad8f88c 100644 --- a/templates/dart/lib/src/enums/enum.dart.twig +++ b/templates/dart/lib/src/enums/enum.dart.twig @@ -2,7 +2,11 @@ part of {{ language.params.packageName }}.enums; enum {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - {{value | caseCamel | replace({'-': ''})}}{% if not loop.last %}, + {{value | caseCamel | replace({'-': ''})}}('{{ value }}'){% if not loop.last %}, {% endif %} +{% if loop.last %};{% endif %} {% endfor %} + +final String value; +const {{ enum.name | caseUcfirst | overrideIdentifier }}(this.value); } \ No newline at end of file From 0af2a86f7117d5405e67de4fd5caa24ed32c0378 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Mon, 17 Jul 2023 11:17:14 +0530 Subject: [PATCH 16/47] chore: add exports in package.dart.twig --- src/SDK/Language/Dart.php | 5 ----- src/SDK/Language/Flutter.php | 5 ----- templates/dart/lib/enums.dart.twig | 5 ----- templates/dart/lib/package.dart.twig | 4 ++++ templates/dart/lib/src/enums/enum.dart.twig | 2 +- templates/flutter/lib/package.dart.twig | 3 +++ 6 files changed, 8 insertions(+), 16 deletions(-) delete mode 100644 templates/dart/lib/enums.dart.twig diff --git a/src/SDK/Language/Dart.php b/src/SDK/Language/Dart.php index d44525f272..753d6259fd 100644 --- a/src/SDK/Language/Dart.php +++ b/src/SDK/Language/Dart.php @@ -471,11 +471,6 @@ public function getFiles(): array 'destination' => 'lib/src/enums/{{ enum.name | caseSnake }}.dart', 'template' => 'dart/lib/src/enums/enum.dart.twig', ], - [ - 'scope' => 'default', - 'destination' => 'lib/enums.dart', - 'template' => 'dart/lib/enums.dart.twig', - ], ]; } diff --git a/src/SDK/Language/Flutter.php b/src/SDK/Language/Flutter.php index 26f84b8d7c..1da9709b5a 100644 --- a/src/SDK/Language/Flutter.php +++ b/src/SDK/Language/Flutter.php @@ -335,11 +335,6 @@ public function getFiles(): array 'destination' => 'lib/src/enums/{{ enum.name | caseSnake }}.dart', 'template' => 'dart/lib/src/enums/enum.dart.twig', ], - [ - 'scope' => 'default', - 'destination' => 'lib/enums.dart', - 'template' => 'dart/lib/enums.dart.twig', - ], ]; } } diff --git a/templates/dart/lib/enums.dart.twig b/templates/dart/lib/enums.dart.twig deleted file mode 100644 index 3932e5fe02..0000000000 --- a/templates/dart/lib/enums.dart.twig +++ /dev/null @@ -1,5 +0,0 @@ -library {{ language.params.packageName }}.enums; - -{% for enum in enums %} -part 'src/enums/{{enum | caseSnake}}.dart'; -{% endfor %} diff --git a/templates/dart/lib/package.dart.twig b/templates/dart/lib/package.dart.twig index 2ff4077c0b..688b80b82b 100644 --- a/templates/dart/lib/package.dart.twig +++ b/templates/dart/lib/package.dart.twig @@ -27,3 +27,7 @@ part 'id.dart'; {% for service in spec.services %} part 'services/{{service.name | caseDash}}.dart'; {% endfor %} + +{% for enum in enums %} +part 'src/enums/{{enum | caseSnake}}.dart'; +{% endfor %} diff --git a/templates/dart/lib/src/enums/enum.dart.twig b/templates/dart/lib/src/enums/enum.dart.twig index 91bad8f88c..7d0c31d8cb 100644 --- a/templates/dart/lib/src/enums/enum.dart.twig +++ b/templates/dart/lib/src/enums/enum.dart.twig @@ -1,4 +1,4 @@ -part of {{ language.params.packageName }}.enums; +part of {{ language.params.packageName }}; enum {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} diff --git a/templates/flutter/lib/package.dart.twig b/templates/flutter/lib/package.dart.twig index 9d92197b15..ca6dc09c8e 100644 --- a/templates/flutter/lib/package.dart.twig +++ b/templates/flutter/lib/package.dart.twig @@ -28,4 +28,7 @@ part 'role.dart'; part 'id.dart'; {% for service in spec.services %} part 'services/{{service.name | caseDash}}.dart'; +{% endfor %} +{% for enum in enums %} +part 'src/enums/{{enum | caseSnake}}.dart'; {% endfor %} \ No newline at end of file From 63f7b83502c12a286614b0db5d6af9c027d6639e Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Mon, 17 Jul 2023 12:34:34 +0530 Subject: [PATCH 17/47] chore: export enums in index.ts --- templates/web/src/enums/enum.ts.twig | 2 +- templates/web/src/index.ts.twig | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/templates/web/src/enums/enum.ts.twig b/templates/web/src/enums/enum.ts.twig index aa5a197ad8..d284e76481 100644 --- a/templates/web/src/enums/enum.ts.twig +++ b/templates/web/src/enums/enum.ts.twig @@ -1,4 +1,4 @@ -export enum {{ enum.name | caseUcfirst | overrideIdentifier }} { +export enum {{ enum.name | caseUcfirst }} { {% for value in enum.enum %} {{ value | caseUcfirst | replace({'-': ''})}} = '{{ value }}', {% endfor %} diff --git a/templates/web/src/index.ts.twig b/templates/web/src/index.ts.twig index 75ecd534da..dcee4ebc4d 100644 --- a/templates/web/src/index.ts.twig +++ b/templates/web/src/index.ts.twig @@ -6,4 +6,7 @@ export type { Models, Payload, RealtimeResponseEvent, UploadProgress } from './c export type { QueryTypes, QueryTypesList } from './query'; export { Permission } from './permission'; export { Role } from './role'; -export { ID } from './id'; \ No newline at end of file +export { ID } from './id'; +{% for enum in enums %} +export { {{ enum | caseUcfirst }} } from './enums/{{enum | caseDash}}'; +{% endfor %} \ No newline at end of file From 5e8d758111c9d6f27934748b324ba94e203c5d74 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Mon, 17 Jul 2023 15:02:39 +0530 Subject: [PATCH 18/47] chore: add missing whitelist enums --- src/SDK/SDK.php | 10 +++++----- src/Spec/Swagger2.php | 12 +++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/SDK/SDK.php b/src/SDK/SDK.php index deeaa2a59d..2594f9a7fb 100644 --- a/src/SDK/SDK.php +++ b/src/SDK/SDK.php @@ -640,15 +640,15 @@ public function generate(string $target): void $methods = $this->spec->getMethods($key); foreach ($methods as $method) { - $parameters = $method['parameters']['path']; + $parameters = $method['parameters']['all']; foreach ($parameters as $parameter) { - // Check if the enum field is defined - if ($parameter['enum-values'] != null) { + // Check if the enum field is defined + if (isset($parameter['enum-values'])) { $params['enum'] = [ - 'name' => $parameter['enum-name'], + 'name' => $parameter['enum-name'] ?? $parameter['name'], 'enum' => $parameter['enum-values'], - ]; + ]; $this->render($template, $destination, $block, $params, $minify); } } diff --git a/src/Spec/Swagger2.php b/src/Spec/Swagger2.php index 95c502d0bd..56eeb80ffe 100644 --- a/src/Spec/Swagger2.php +++ b/src/Spec/Swagger2.php @@ -221,14 +221,16 @@ public function getMethods($service) } $param['default'] = (is_array($param['default'])) ? json_encode($param['default']) : $param['default']; + if (isset($parameter['enum'])) { + $param['enum-values'] = $parameter['enum']; + $param['enum-name'] = $parameter['x-enum-name']; + } switch ($parameter['in']) { case 'header': $output['parameters']['header'][] = $param; break; case 'path': - $param['enum-values'] = $parameter['enum'] ?? null; - $param['enum-name'] = $parameter['x-enum-name'] ?? null; $output['parameters']['path'][] = $param; break; case 'query': @@ -354,9 +356,9 @@ public function getEnumNames(): array foreach ($this->getServices() as $key => $service) { foreach ($this->getMethods($key) as $method) { if (isset($method['parameters']) && is_array($method['parameters'])) { - foreach ($method['parameters']['path'] as $parameter) { - if (isset($parameter['enum-name'])) { - $list[] = $parameter['enum-name']; + foreach ($method['parameters']['all'] as $parameter) { + if (isset($parameter['enum-values'])) { + $list[] = $parameter['enum-name'] ?? $parameter['name']; } } } From 00bc2f98fe5ebce1b1b575427c0ab23882b8a507 Mon Sep 17 00:00:00 2001 From: Aditya Oberai Date: Mon, 17 Jul 2023 09:56:30 +0000 Subject: [PATCH 19/47] Create .NET enums template --- src/SDK/Language/DotNet.php | 5 +++++ templates/dotnet/src/Appwrite/Enums/Enums.cs.twig | 11 +++++++++++ 2 files changed, 16 insertions(+) create mode 100644 templates/dotnet/src/Appwrite/Enums/Enums.cs.twig diff --git a/src/SDK/Language/DotNet.php b/src/SDK/Language/DotNet.php index 709f56ea5e..a15764a4b6 100644 --- a/src/SDK/Language/DotNet.php +++ b/src/SDK/Language/DotNet.php @@ -394,6 +394,11 @@ public function getFiles(): array 'scope' => 'definition', 'destination' => '/src/{{ spec.title | caseUcfirst }}/Models/{{ definition.name | caseUcfirst | overrideIdentifier }}.cs', 'template' => 'dotnet/src/Appwrite/Models/Model.cs.twig', + ], + [ + 'scope' => 'enum', + 'destination' => '/src/{{ spec.title | caseUcfirst }}/Enums/{{ definition.name | caseUcfirst | overrideIdentifier }}.cs', + 'template' => 'dotnet/src/Appwrite/Enums/Enums.cs.twig', ] ]; } diff --git a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig new file mode 100644 index 0000000000..b28cb63d32 --- /dev/null +++ b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig @@ -0,0 +1,11 @@ +using System; + +namespace {{ spec.title | caseUcfirst }}.Enums +{ + public static class {{ enum.name | caseUcfirst | overrideIdentifier }} + { + {% for value in enum.enum %} + public static string {{ value | caseUcfirst | replace({'-': ''}) }} = "{{ value }}", + {% endfor %} + } +} \ No newline at end of file From 0ffeca4c2a7f427619670fb097f6531714d8bdcc Mon Sep 17 00:00:00 2001 From: Aditya Oberai Date: Mon, 17 Jul 2023 15:33:26 +0530 Subject: [PATCH 20/47] Update src/SDK/Language/DotNet.php Co-authored-by: Bishwajeet Parhi <62933155+2002Bishwajeet@users.noreply.github.com> --- src/SDK/Language/DotNet.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SDK/Language/DotNet.php b/src/SDK/Language/DotNet.php index a15764a4b6..ea54c5a76e 100644 --- a/src/SDK/Language/DotNet.php +++ b/src/SDK/Language/DotNet.php @@ -397,7 +397,7 @@ public function getFiles(): array ], [ 'scope' => 'enum', - 'destination' => '/src/{{ spec.title | caseUcfirst }}/Enums/{{ definition.name | caseUcfirst | overrideIdentifier }}.cs', + 'destination' => '/src/{{ spec.title | caseUcfirst }}/Enums/{{ enum.name | caseUcfirst | overrideIdentifier }}.cs', 'template' => 'dotnet/src/Appwrite/Enums/Enums.cs.twig', ] ]; From 7557829c93a981929a2ae5c1da990e9cf149fb24 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Tue, 18 Jul 2023 20:30:26 +0530 Subject: [PATCH 21/47] chore: refactors --- example.php | 10 +++++----- src/SDK/SDK.php | 1 + src/Spec/Swagger2.php | 1 + .../src/main/java/io/appwrite/enums/Enum.kt.twig | 3 ++- templates/dart/lib/src/enums/enum.dart.twig | 3 ++- templates/deno/src/enums/enum.ts.twig | 3 ++- templates/dotnet/src/Appwrite/Enums/Enums.cs.twig | 3 ++- .../src/main/kotlin/io/appwrite/enums/Enum.kt.twig | 3 ++- templates/node/lib/enums/enum.js.twig | 3 ++- templates/php/src/Enums/Enum.php.twig | 3 ++- templates/python/package/enums/enum.py.twig | 3 ++- templates/web/src/enums/enum.ts.twig | 3 ++- 12 files changed, 25 insertions(+), 14 deletions(-) diff --git a/example.php b/example.php index 6af298baf0..8de4c83d56 100644 --- a/example.php +++ b/example.php @@ -37,13 +37,13 @@ function getSSLPage($url) { } // Leave the platform you want uncommented - $platform = 'client'; - // $platform = 'console'; - // $platform = 'server'; +// $platform = 'client'; +// $platform = 'console'; + $platform = 'server'; - $spec = getSSLPage("https://raw.githubusercontent.com/appwrite/appwrite/master/app/config/specs/swagger2-latest-{$platform}.json"); + $spec = getSSLPage("https://raw.githubusercontent.com/2002bishwajeet/appwrite/feat-whitelist-enums/app/config/specs/swagger2-latest-{$platform}.json"); - if(empty($spec)) { + if (empty($spec)) { throw new Exception('Failed to fetch spec from Appwrite server'); } diff --git a/src/SDK/SDK.php b/src/SDK/SDK.php index 2594f9a7fb..f94f35d71b 100644 --- a/src/SDK/SDK.php +++ b/src/SDK/SDK.php @@ -648,6 +648,7 @@ public function generate(string $target): void $params['enum'] = [ 'name' => $parameter['enum-name'] ?? $parameter['name'], 'enum' => $parameter['enum-values'], + 'keys' => $parameter['enum-keys'], ]; $this->render($template, $destination, $block, $params, $minify); } diff --git a/src/Spec/Swagger2.php b/src/Spec/Swagger2.php index 56eeb80ffe..f2cce1b063 100644 --- a/src/Spec/Swagger2.php +++ b/src/Spec/Swagger2.php @@ -224,6 +224,7 @@ public function getMethods($service) if (isset($parameter['enum'])) { $param['enum-values'] = $parameter['enum']; $param['enum-name'] = $parameter['x-enum-name']; + $param['enum-keys'] = $parameter['x-enum-keys']; } switch ($parameter['in']) { diff --git a/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig b/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig index 39a5da515e..c8f97f1c11 100644 --- a/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig +++ b/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig @@ -2,7 +2,8 @@ package {{ sdk.namespace | caseDot }}.enums enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(val value: String) { {% for value in enum.enum %} - {{value | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + {{ key | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, {% endif %} {% endfor %} diff --git a/templates/dart/lib/src/enums/enum.dart.twig b/templates/dart/lib/src/enums/enum.dart.twig index 7d0c31d8cb..29c574c3ed 100644 --- a/templates/dart/lib/src/enums/enum.dart.twig +++ b/templates/dart/lib/src/enums/enum.dart.twig @@ -2,7 +2,8 @@ part of {{ language.params.packageName }}; enum {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - {{value | caseCamel | replace({'-': ''})}}('{{ value }}'){% if not loop.last %}, +{% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + {{ key | caseCamel | replace({'-': ''})}}('{{ value }}'){% if not loop.last %}, {% endif %} {% if loop.last %};{% endif %} {% endfor %} diff --git a/templates/deno/src/enums/enum.ts.twig b/templates/deno/src/enums/enum.ts.twig index 74cb8e88af..b94dd355ff 100644 --- a/templates/deno/src/enums/enum.ts.twig +++ b/templates/deno/src/enums/enum.ts.twig @@ -1,5 +1,6 @@ export enum {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - {{ value | caseUcfirst | replace({'-': ''}) }} = '{{ value }}', + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + {{ key | caseUcfirst | replace({'-': ''}) }} = '{{ value }}', {% endfor %} } \ No newline at end of file diff --git a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig index b28cb63d32..6ecf1f02d7 100644 --- a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig +++ b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig @@ -5,7 +5,8 @@ namespace {{ spec.title | caseUcfirst }}.Enums public static class {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - public static string {{ value | caseUcfirst | replace({'-': ''}) }} = "{{ value }}", + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + public static string {{ key | caseUcfirst | replace({'-': ''}) }} = "{{ value }}", {% endfor %} } } \ No newline at end of file diff --git a/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig b/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig index 39a5da515e..c8f97f1c11 100644 --- a/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig +++ b/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig @@ -2,7 +2,8 @@ package {{ sdk.namespace | caseDot }}.enums enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(val value: String) { {% for value in enum.enum %} - {{value | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + {{ key | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, {% endif %} {% endfor %} diff --git a/templates/node/lib/enums/enum.js.twig b/templates/node/lib/enums/enum.js.twig index 5e153247b5..cb70680b19 100644 --- a/templates/node/lib/enums/enum.js.twig +++ b/templates/node/lib/enums/enum.js.twig @@ -1,6 +1,7 @@ const {{ enum.name | caseUcfirst | overrideIdentifier }} = { {% for value in enum.enum %} - {{ value | caseLower | replace({'-': ''})}}: '{{value}}' {% if not loop.last %}, + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + {{ key | caseLower | replace({'-': ''})}}: '{{value}}' {% if not loop.last %}, {% endif %} {% endfor %} } diff --git a/templates/php/src/Enums/Enum.php.twig b/templates/php/src/Enums/Enum.php.twig index f60d9e8b68..b3d809dd83 100644 --- a/templates/php/src/Enums/Enum.php.twig +++ b/templates/php/src/Enums/Enum.php.twig @@ -5,6 +5,7 @@ namespace {{ spec.title | caseUcfirst }}\Enums; class {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - public const {{value | caseUpper | replace({'-': ''})}} = '{{value}}'; + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + public const {{ key | caseUpper | replace({'-': ''})}} = '{{value}}'; {% endfor %} } diff --git a/templates/python/package/enums/enum.py.twig b/templates/python/package/enums/enum.py.twig index 95c11cfaa9..f7b6cbcfb7 100644 --- a/templates/python/package/enums/enum.py.twig +++ b/templates/python/package/enums/enum.py.twig @@ -2,5 +2,6 @@ from enum import Enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(Enum): {% for value in enum.enum %} - {{value | caseUpper | replace({'-': ''})}} = "{{ value }}" + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + {{ key | caseUpper | replace({'-': ''})}} = "{{ value }}" {% endfor %} \ No newline at end of file diff --git a/templates/web/src/enums/enum.ts.twig b/templates/web/src/enums/enum.ts.twig index d284e76481..d9366b495e 100644 --- a/templates/web/src/enums/enum.ts.twig +++ b/templates/web/src/enums/enum.ts.twig @@ -1,5 +1,6 @@ export enum {{ enum.name | caseUcfirst }} { {% for value in enum.enum %} - {{ value | caseUcfirst | replace({'-': ''})}} = '{{ value }}', + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + {{ key | caseUcfirst | replace({'-': ''})}} = '{{ value }}', {% endfor %} } \ No newline at end of file From ea06f3778fd2bc3c096ad9af9743cc56887a4862 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Tue, 18 Jul 2023 21:17:49 +0530 Subject: [PATCH 22/47] Revert "chore: refactors" This reverts commit 7557829c93a981929a2ae5c1da990e9cf149fb24. --- src/SDK/SDK.php | 1 - src/Spec/Swagger2.php | 1 - .../library/src/main/java/io/appwrite/enums/Enum.kt.twig | 3 +-- templates/dart/lib/src/enums/enum.dart.twig | 3 +-- templates/deno/src/enums/enum.ts.twig | 3 +-- templates/dotnet/src/Appwrite/Enums/Enums.cs.twig | 3 +-- .../kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig | 3 +-- templates/node/lib/enums/enum.js.twig | 3 +-- templates/php/src/Enums/Enum.php.twig | 3 +-- templates/python/package/enums/enum.py.twig | 3 +-- templates/web/src/enums/enum.ts.twig | 3 +-- 11 files changed, 9 insertions(+), 20 deletions(-) diff --git a/src/SDK/SDK.php b/src/SDK/SDK.php index f94f35d71b..2594f9a7fb 100644 --- a/src/SDK/SDK.php +++ b/src/SDK/SDK.php @@ -648,7 +648,6 @@ public function generate(string $target): void $params['enum'] = [ 'name' => $parameter['enum-name'] ?? $parameter['name'], 'enum' => $parameter['enum-values'], - 'keys' => $parameter['enum-keys'], ]; $this->render($template, $destination, $block, $params, $minify); } diff --git a/src/Spec/Swagger2.php b/src/Spec/Swagger2.php index f2cce1b063..56eeb80ffe 100644 --- a/src/Spec/Swagger2.php +++ b/src/Spec/Swagger2.php @@ -224,7 +224,6 @@ public function getMethods($service) if (isset($parameter['enum'])) { $param['enum-values'] = $parameter['enum']; $param['enum-name'] = $parameter['x-enum-name']; - $param['enum-keys'] = $parameter['x-enum-keys']; } switch ($parameter['in']) { diff --git a/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig b/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig index c8f97f1c11..39a5da515e 100644 --- a/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig +++ b/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig @@ -2,8 +2,7 @@ package {{ sdk.namespace | caseDot }}.enums enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(val value: String) { {% for value in enum.enum %} - {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, + {{value | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, {% endif %} {% endfor %} diff --git a/templates/dart/lib/src/enums/enum.dart.twig b/templates/dart/lib/src/enums/enum.dart.twig index 29c574c3ed..7d0c31d8cb 100644 --- a/templates/dart/lib/src/enums/enum.dart.twig +++ b/templates/dart/lib/src/enums/enum.dart.twig @@ -2,8 +2,7 @@ part of {{ language.params.packageName }}; enum {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} -{% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseCamel | replace({'-': ''})}}('{{ value }}'){% if not loop.last %}, + {{value | caseCamel | replace({'-': ''})}}('{{ value }}'){% if not loop.last %}, {% endif %} {% if loop.last %};{% endif %} {% endfor %} diff --git a/templates/deno/src/enums/enum.ts.twig b/templates/deno/src/enums/enum.ts.twig index b94dd355ff..74cb8e88af 100644 --- a/templates/deno/src/enums/enum.ts.twig +++ b/templates/deno/src/enums/enum.ts.twig @@ -1,6 +1,5 @@ export enum {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseUcfirst | replace({'-': ''}) }} = '{{ value }}', + {{ value | caseUcfirst | replace({'-': ''}) }} = '{{ value }}', {% endfor %} } \ No newline at end of file diff --git a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig index 6ecf1f02d7..b28cb63d32 100644 --- a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig +++ b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig @@ -5,8 +5,7 @@ namespace {{ spec.title | caseUcfirst }}.Enums public static class {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - public static string {{ key | caseUcfirst | replace({'-': ''}) }} = "{{ value }}", + public static string {{ value | caseUcfirst | replace({'-': ''}) }} = "{{ value }}", {% endfor %} } } \ No newline at end of file diff --git a/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig b/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig index c8f97f1c11..39a5da515e 100644 --- a/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig +++ b/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig @@ -2,8 +2,7 @@ package {{ sdk.namespace | caseDot }}.enums enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(val value: String) { {% for value in enum.enum %} - {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, + {{value | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, {% endif %} {% endfor %} diff --git a/templates/node/lib/enums/enum.js.twig b/templates/node/lib/enums/enum.js.twig index cb70680b19..5e153247b5 100644 --- a/templates/node/lib/enums/enum.js.twig +++ b/templates/node/lib/enums/enum.js.twig @@ -1,7 +1,6 @@ const {{ enum.name | caseUcfirst | overrideIdentifier }} = { {% for value in enum.enum %} - {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseLower | replace({'-': ''})}}: '{{value}}' {% if not loop.last %}, + {{ value | caseLower | replace({'-': ''})}}: '{{value}}' {% if not loop.last %}, {% endif %} {% endfor %} } diff --git a/templates/php/src/Enums/Enum.php.twig b/templates/php/src/Enums/Enum.php.twig index b3d809dd83..f60d9e8b68 100644 --- a/templates/php/src/Enums/Enum.php.twig +++ b/templates/php/src/Enums/Enum.php.twig @@ -5,7 +5,6 @@ namespace {{ spec.title | caseUcfirst }}\Enums; class {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - public const {{ key | caseUpper | replace({'-': ''})}} = '{{value}}'; + public const {{value | caseUpper | replace({'-': ''})}} = '{{value}}'; {% endfor %} } diff --git a/templates/python/package/enums/enum.py.twig b/templates/python/package/enums/enum.py.twig index f7b6cbcfb7..95c11cfaa9 100644 --- a/templates/python/package/enums/enum.py.twig +++ b/templates/python/package/enums/enum.py.twig @@ -2,6 +2,5 @@ from enum import Enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(Enum): {% for value in enum.enum %} - {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseUpper | replace({'-': ''})}} = "{{ value }}" + {{value | caseUpper | replace({'-': ''})}} = "{{ value }}" {% endfor %} \ No newline at end of file diff --git a/templates/web/src/enums/enum.ts.twig b/templates/web/src/enums/enum.ts.twig index d9366b495e..d284e76481 100644 --- a/templates/web/src/enums/enum.ts.twig +++ b/templates/web/src/enums/enum.ts.twig @@ -1,6 +1,5 @@ export enum {{ enum.name | caseUcfirst }} { {% for value in enum.enum %} - {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseUcfirst | replace({'-': ''})}} = '{{ value }}', + {{ value | caseUcfirst | replace({'-': ''})}} = '{{ value }}', {% endfor %} } \ No newline at end of file From d38abfbcead9335885ad8ab06da496758609351d Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Tue, 18 Jul 2023 22:02:53 +0530 Subject: [PATCH 23/47] Revert "Revert "chore: refactors"" This reverts commit ea06f3778fd2bc3c096ad9af9743cc56887a4862. --- src/SDK/SDK.php | 1 + src/Spec/Swagger2.php | 1 + .../library/src/main/java/io/appwrite/enums/Enum.kt.twig | 3 ++- templates/dart/lib/src/enums/enum.dart.twig | 3 ++- templates/deno/src/enums/enum.ts.twig | 3 ++- templates/dotnet/src/Appwrite/Enums/Enums.cs.twig | 3 ++- .../kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig | 3 ++- templates/node/lib/enums/enum.js.twig | 3 ++- templates/php/src/Enums/Enum.php.twig | 3 ++- templates/python/package/enums/enum.py.twig | 3 ++- templates/web/src/enums/enum.ts.twig | 3 ++- 11 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/SDK/SDK.php b/src/SDK/SDK.php index 2594f9a7fb..f94f35d71b 100644 --- a/src/SDK/SDK.php +++ b/src/SDK/SDK.php @@ -648,6 +648,7 @@ public function generate(string $target): void $params['enum'] = [ 'name' => $parameter['enum-name'] ?? $parameter['name'], 'enum' => $parameter['enum-values'], + 'keys' => $parameter['enum-keys'], ]; $this->render($template, $destination, $block, $params, $minify); } diff --git a/src/Spec/Swagger2.php b/src/Spec/Swagger2.php index 56eeb80ffe..f2cce1b063 100644 --- a/src/Spec/Swagger2.php +++ b/src/Spec/Swagger2.php @@ -224,6 +224,7 @@ public function getMethods($service) if (isset($parameter['enum'])) { $param['enum-values'] = $parameter['enum']; $param['enum-name'] = $parameter['x-enum-name']; + $param['enum-keys'] = $parameter['x-enum-keys']; } switch ($parameter['in']) { diff --git a/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig b/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig index 39a5da515e..c8f97f1c11 100644 --- a/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig +++ b/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig @@ -2,7 +2,8 @@ package {{ sdk.namespace | caseDot }}.enums enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(val value: String) { {% for value in enum.enum %} - {{value | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + {{ key | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, {% endif %} {% endfor %} diff --git a/templates/dart/lib/src/enums/enum.dart.twig b/templates/dart/lib/src/enums/enum.dart.twig index 7d0c31d8cb..29c574c3ed 100644 --- a/templates/dart/lib/src/enums/enum.dart.twig +++ b/templates/dart/lib/src/enums/enum.dart.twig @@ -2,7 +2,8 @@ part of {{ language.params.packageName }}; enum {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - {{value | caseCamel | replace({'-': ''})}}('{{ value }}'){% if not loop.last %}, +{% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + {{ key | caseCamel | replace({'-': ''})}}('{{ value }}'){% if not loop.last %}, {% endif %} {% if loop.last %};{% endif %} {% endfor %} diff --git a/templates/deno/src/enums/enum.ts.twig b/templates/deno/src/enums/enum.ts.twig index 74cb8e88af..b94dd355ff 100644 --- a/templates/deno/src/enums/enum.ts.twig +++ b/templates/deno/src/enums/enum.ts.twig @@ -1,5 +1,6 @@ export enum {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - {{ value | caseUcfirst | replace({'-': ''}) }} = '{{ value }}', + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + {{ key | caseUcfirst | replace({'-': ''}) }} = '{{ value }}', {% endfor %} } \ No newline at end of file diff --git a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig index b28cb63d32..6ecf1f02d7 100644 --- a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig +++ b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig @@ -5,7 +5,8 @@ namespace {{ spec.title | caseUcfirst }}.Enums public static class {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - public static string {{ value | caseUcfirst | replace({'-': ''}) }} = "{{ value }}", + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + public static string {{ key | caseUcfirst | replace({'-': ''}) }} = "{{ value }}", {% endfor %} } } \ No newline at end of file diff --git a/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig b/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig index 39a5da515e..c8f97f1c11 100644 --- a/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig +++ b/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig @@ -2,7 +2,8 @@ package {{ sdk.namespace | caseDot }}.enums enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(val value: String) { {% for value in enum.enum %} - {{value | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + {{ key | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, {% endif %} {% endfor %} diff --git a/templates/node/lib/enums/enum.js.twig b/templates/node/lib/enums/enum.js.twig index 5e153247b5..cb70680b19 100644 --- a/templates/node/lib/enums/enum.js.twig +++ b/templates/node/lib/enums/enum.js.twig @@ -1,6 +1,7 @@ const {{ enum.name | caseUcfirst | overrideIdentifier }} = { {% for value in enum.enum %} - {{ value | caseLower | replace({'-': ''})}}: '{{value}}' {% if not loop.last %}, + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + {{ key | caseLower | replace({'-': ''})}}: '{{value}}' {% if not loop.last %}, {% endif %} {% endfor %} } diff --git a/templates/php/src/Enums/Enum.php.twig b/templates/php/src/Enums/Enum.php.twig index f60d9e8b68..b3d809dd83 100644 --- a/templates/php/src/Enums/Enum.php.twig +++ b/templates/php/src/Enums/Enum.php.twig @@ -5,6 +5,7 @@ namespace {{ spec.title | caseUcfirst }}\Enums; class {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} - public const {{value | caseUpper | replace({'-': ''})}} = '{{value}}'; + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + public const {{ key | caseUpper | replace({'-': ''})}} = '{{value}}'; {% endfor %} } diff --git a/templates/python/package/enums/enum.py.twig b/templates/python/package/enums/enum.py.twig index 95c11cfaa9..f7b6cbcfb7 100644 --- a/templates/python/package/enums/enum.py.twig +++ b/templates/python/package/enums/enum.py.twig @@ -2,5 +2,6 @@ from enum import Enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(Enum): {% for value in enum.enum %} - {{value | caseUpper | replace({'-': ''})}} = "{{ value }}" + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + {{ key | caseUpper | replace({'-': ''})}} = "{{ value }}" {% endfor %} \ No newline at end of file diff --git a/templates/web/src/enums/enum.ts.twig b/templates/web/src/enums/enum.ts.twig index d284e76481..d9366b495e 100644 --- a/templates/web/src/enums/enum.ts.twig +++ b/templates/web/src/enums/enum.ts.twig @@ -1,5 +1,6 @@ export enum {{ enum.name | caseUcfirst }} { {% for value in enum.enum %} - {{ value | caseUcfirst | replace({'-': ''})}} = '{{ value }}', + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + {{ key | caseUcfirst | replace({'-': ''})}} = '{{ value }}', {% endfor %} } \ No newline at end of file From b1beb30f7ec3ab73c1a832b96c37d658bb6c9fa0 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Tue, 18 Jul 2023 22:06:16 +0530 Subject: [PATCH 24/47] revert example.php --- example.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/example.php b/example.php index 8de4c83d56..62ab280f23 100644 --- a/example.php +++ b/example.php @@ -38,12 +38,12 @@ function getSSLPage($url) { // Leave the platform you want uncommented // $platform = 'client'; -// $platform = 'console'; - $platform = 'server'; + $platform = 'console'; + // $platform = 'server'; - $spec = getSSLPage("https://raw.githubusercontent.com/2002bishwajeet/appwrite/feat-whitelist-enums/app/config/specs/swagger2-latest-{$platform}.json"); + $spec = getSSLPage("https://raw.githubusercontent.com/appwrite/appwrite/master/app/config/specs/swagger2-latest-{$platform}.json"); - if (empty($spec)) { + if(empty($spec)) { throw new Exception('Failed to fetch spec from Appwrite server'); } From f7bb7e921190bec69d10ee5bd57673b2c6dde2d5 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi <62933155+2002Bishwajeet@users.noreply.github.com> Date: Wed, 19 Jul 2023 16:31:59 +0530 Subject: [PATCH 25/47] Update templates/dart/lib/package.dart.twig Co-authored-by: Damodar Lohani --- templates/dart/lib/package.dart.twig | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/dart/lib/package.dart.twig b/templates/dart/lib/package.dart.twig index 688b80b82b..0b0942d8ec 100644 --- a/templates/dart/lib/package.dart.twig +++ b/templates/dart/lib/package.dart.twig @@ -27,7 +27,6 @@ part 'id.dart'; {% for service in spec.services %} part 'services/{{service.name | caseDash}}.dart'; {% endfor %} - {% for enum in enums %} part 'src/enums/{{enum | caseSnake}}.dart'; {% endfor %} From 3d475bdcc407d266af632994dc217cb874fbc2ce Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Fri, 21 Jul 2023 23:59:59 +0530 Subject: [PATCH 26/47] change to camelCase --- src/SDK/SDK.php | 8 ++++---- src/Spec/Swagger2.php | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/SDK/SDK.php b/src/SDK/SDK.php index f94f35d71b..639fa12472 100644 --- a/src/SDK/SDK.php +++ b/src/SDK/SDK.php @@ -644,11 +644,11 @@ public function generate(string $target): void foreach ($parameters as $parameter) { // Check if the enum field is defined - if (isset($parameter['enum-values'])) { + if (isset($parameter['enumValues'])) { $params['enum'] = [ - 'name' => $parameter['enum-name'] ?? $parameter['name'], - 'enum' => $parameter['enum-values'], - 'keys' => $parameter['enum-keys'], + 'name' => $parameter['enumName'] ?? $parameter['name'], + 'enum' => $parameter['enumValues'], + 'keys' => $parameter['enumKeys'], ]; $this->render($template, $destination, $block, $params, $minify); } diff --git a/src/Spec/Swagger2.php b/src/Spec/Swagger2.php index f2cce1b063..4cad9f1eb8 100644 --- a/src/Spec/Swagger2.php +++ b/src/Spec/Swagger2.php @@ -222,9 +222,9 @@ public function getMethods($service) $param['default'] = (is_array($param['default'])) ? json_encode($param['default']) : $param['default']; if (isset($parameter['enum'])) { - $param['enum-values'] = $parameter['enum']; - $param['enum-name'] = $parameter['x-enum-name']; - $param['enum-keys'] = $parameter['x-enum-keys']; + $param['enumValues'] = $parameter['enum']; + $param['enumName'] = $parameter['x-enum-name']; + $param['enumKeys'] = $parameter['x-enum-keys']; } switch ($parameter['in']) { @@ -358,8 +358,8 @@ public function getEnumNames(): array foreach ($this->getMethods($key) as $method) { if (isset($method['parameters']) && is_array($method['parameters'])) { foreach ($method['parameters']['all'] as $parameter) { - if (isset($parameter['enum-values'])) { - $list[] = $parameter['enum-name'] ?? $parameter['name']; + if (isset($parameter['enumValues'])) { + $list[] = $parameter['enumName'] ?? $parameter['name']; } } } From 7065a77381d2e74e0cc8eee20759ef0b4179be41 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Sat, 22 Jul 2023 00:26:32 +0530 Subject: [PATCH 27/47] feat: docs --- templates/android/docs/java/example.md.twig | 2 +- templates/android/docs/kotlin/example.md.twig | 2 +- .../library/src/main/java/io/appwrite/enums/Enum.kt.twig | 2 +- templates/dart/docs/example.md.twig | 4 ++-- templates/deno/docs/example.md.twig | 2 +- templates/dotnet/docs/example.md.twig | 2 +- templates/kotlin/docs/java/example.md.twig | 2 +- templates/kotlin/docs/kotlin/example.md.twig | 2 +- .../kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig | 2 +- templates/node/docs/example.md.twig | 2 +- templates/node/lib/enums/enum.js.twig | 2 +- templates/php/docs/example.md.twig | 2 +- templates/php/src/Enums/Enum.php.twig | 2 +- templates/python/docs/example.md.twig | 2 +- templates/python/package/enums/enum.py.twig | 2 +- templates/web/docs/example.md.twig | 2 +- 16 files changed, 17 insertions(+), 17 deletions(-) diff --git a/templates/android/docs/java/example.md.twig b/templates/android/docs/java/example.md.twig index 23f797098e..4c9a69105b 100644 --- a/templates/android/docs/java/example.md.twig +++ b/templates/android/docs/java/example.md.twig @@ -26,7 +26,7 @@ Client client = new Client(context) {% for parameter in method.parameters.all %} {% if parameter.required %} - {{ parameter | paramExample }}{% if not loop.last %},{% endif %} + {% if parameter.enumValues | length > 0%}{{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseUpper | replace({'-': '',' ':''}) }}{% else%}{{ parameter | paramExample }}{% endif %}{% if not loop.last %},{% endif %} {% endif %} {% if loop.last %} diff --git a/templates/android/docs/kotlin/example.md.twig b/templates/android/docs/kotlin/example.md.twig index 8acb6e64a6..b44cc2b11b 100644 --- a/templates/android/docs/kotlin/example.md.twig +++ b/templates/android/docs/kotlin/example.md.twig @@ -18,7 +18,7 @@ val {{ service.name | caseCamel }} = {{ service.name | caseUcfirst }}(client) {% for parameter in method.parameters.all %} {% if parameter.required %} - {{parameter.name}} = {{ parameter | paramExample }}{% if not loop.last %},{% endif %} + {{parameter.name}} = {% if parameter.enumValues | length > 0%}{{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseUcfirst | replace({'-': '',' ':''}) }}{% else%}{{ parameter | paramExample }}{% endif %}{% if not loop.last %},{% endif %} {% endif %} {% if loop.last %} diff --git a/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig b/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig index c8f97f1c11..47576854b2 100644 --- a/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig +++ b/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig @@ -3,7 +3,7 @@ package {{ sdk.namespace | caseDot }}.enums enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(val value: String) { {% for value in enum.enum %} {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, + {{ key | caseUpper | replace({'-': '',' ':'_'})}}('{{value}}'){% if not loop.last %}, {% endif %} {% endfor %} diff --git a/templates/dart/docs/example.md.twig b/templates/dart/docs/example.md.twig index 5e2afae03f..b0f1291385 100644 --- a/templates/dart/docs/example.md.twig +++ b/templates/dart/docs/example.md.twig @@ -22,7 +22,7 @@ void main() { // Init SDK {% endif %} {% if parameter.required %} - {{ parameter.name | caseCamel | overrideIdentifier }}: {{ parameter | paramExample | replace({'': (parameter.name | caseCamel) }) | raw }}, + {{ parameter.name | caseCamel | overrideIdentifier }}:{% if parameter.enumValues | length > 0%} {{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseCamel | replace({'-': ''}) }}.value{% else%}{{ parameter | paramExample | replace({'': (parameter.name | caseCamel) }) | raw }} {% endif %}, {% endif %} {% endfor %}{% if method.parameters.all | length > 0 %} {% endif %}); @@ -32,4 +32,4 @@ void main() { // Init SDK }).catchError((error) { print(error.response); }); -} \ No newline at end of file +}} \ No newline at end of file diff --git a/templates/deno/docs/example.md.twig b/templates/deno/docs/example.md.twig index 55f3735ee6..e78c1fbf6d 100644 --- a/templates/deno/docs/example.md.twig +++ b/templates/deno/docs/example.md.twig @@ -19,7 +19,7 @@ client {% endif %} -let promise = {{ service.name | caseCamel }}.{{ method.name | caseCamel }}({% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}, {% endif %}{{ parameter | paramExample }}{% endif %}{% endfor %}); +let promise = {{ service.name | caseCamel }}.{{ method.name | caseCamel }}({% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}, {% endif %}{% if parameter.enumValues | length > 0%}{{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseUcfirst | replace({'-': ''}) }}{% else%}{{ parameter | paramExample }}{% endif %}{% endif %}{% endfor %}); promise.then(function (response) { console.log(response); diff --git a/templates/dotnet/docs/example.md.twig b/templates/dotnet/docs/example.md.twig index 2ce25f701c..48aea6186a 100644 --- a/templates/dotnet/docs/example.md.twig +++ b/templates/dotnet/docs/example.md.twig @@ -15,4 +15,4 @@ var {{ service.name | caseCamel }} = new {{ service.name | caseUcfirst }}(client {% if method.method != 'delete' %}{% if method.type == 'location' %}byte[]{% else %}{{ method.responseModel | caseUcfirst | overrideIdentifier }}{% endif %} result = {% endif %}await {{ service.name | caseCamel }}.{{ method.name | caseUcfirst }}({% if method.parameters.all | length == 0 %});{% endif %} {% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %},{% endif %} - {{ parameter.name }}: {{ parameter | paramExample }}{% endif %}{% endfor %}{% if method.parameters.all | length > 0 %});{% endif %} + {{ parameter.name }}: {% if parameter.enumValues | length > 0%} {{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseUcfirst | replace({'-': ''}) }}{% else%}{{ parameter | paramExample }}{% endif %}{% endif %}{% endfor %}{% if method.parameters.all | length > 0 %});{% endif %} diff --git a/templates/kotlin/docs/java/example.md.twig b/templates/kotlin/docs/java/example.md.twig index 75508a1ff7..a5e622ca41 100644 --- a/templates/kotlin/docs/java/example.md.twig +++ b/templates/kotlin/docs/java/example.md.twig @@ -26,7 +26,7 @@ Client client = new Client() {% for parameter in method.parameters.all %} {% if parameter.required %} - {{ parameter | paramExample }}{% if not loop.last %},{% endif %} + {% if parameter.enumValues | length > 0%} {{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseUpper | replace({'-': '',' ':''}) }}{% else%}{{ parameter | paramExample }}{% endif %}{% if not loop.last %},{% endif %} {% endif %} {% if loop.last %} diff --git a/templates/kotlin/docs/kotlin/example.md.twig b/templates/kotlin/docs/kotlin/example.md.twig index 8acb6e64a6..cc662fecb2 100644 --- a/templates/kotlin/docs/kotlin/example.md.twig +++ b/templates/kotlin/docs/kotlin/example.md.twig @@ -18,7 +18,7 @@ val {{ service.name | caseCamel }} = {{ service.name | caseUcfirst }}(client) {% for parameter in method.parameters.all %} {% if parameter.required %} - {{parameter.name}} = {{ parameter | paramExample }}{% if not loop.last %},{% endif %} + {{parameter.name}} = {% if parameter.enumValues | length > 0%} {{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseUpper | replace({'-': '',' ': '_'}) }}{% else%}{{ parameter | paramExample }}{% endif %}{% if not loop.last %},{% endif %} {% endif %} {% if loop.last %} diff --git a/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig b/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig index c8f97f1c11..a56055ce52 100644 --- a/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig +++ b/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig @@ -3,7 +3,7 @@ package {{ sdk.namespace | caseDot }}.enums enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(val value: String) { {% for value in enum.enum %} {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseUpper | replace({'-': ''})}}('{{value}}'){% if not loop.last %}, + {{ key | caseUpper | replace({'-': '',' ': '_'})}}('{{value}}'){% if not loop.last %}, {% endif %} {% endfor %} diff --git a/templates/node/docs/example.md.twig b/templates/node/docs/example.md.twig index 9c0a7a2602..db06dbd046 100644 --- a/templates/node/docs/example.md.twig +++ b/templates/node/docs/example.md.twig @@ -18,7 +18,7 @@ client {% endfor %}; {% endif %} -const promise = {{ service.name | caseCamel }}.{{ method.name | caseCamel }}({% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}, {% endif %}{{ parameter | paramExample }}{% endif %}{% endfor %}); +const promise = {{ service.name | caseCamel }}.{{ method.name | caseCamel }}({% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}, {% endif %}{% if parameter.enumValues | length > 0%}{{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | replace({'-': '',' ': ''}) }}{% else%}{{ parameter | paramExample}}{% endif %}{% endif %}{% endfor %}); promise.then(function (response) { console.log(response); diff --git a/templates/node/lib/enums/enum.js.twig b/templates/node/lib/enums/enum.js.twig index cb70680b19..e9afe841dc 100644 --- a/templates/node/lib/enums/enum.js.twig +++ b/templates/node/lib/enums/enum.js.twig @@ -1,7 +1,7 @@ const {{ enum.name | caseUcfirst | overrideIdentifier }} = { {% for value in enum.enum %} {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseLower | replace({'-': ''})}}: '{{value}}' {% if not loop.last %}, + {{ key | caseLower | replace({'-': '',' ': ''})}}: '{{value}}' {% if not loop.last %}, {% endif %} {% endfor %} } diff --git a/templates/php/docs/example.md.twig b/templates/php/docs/example.md.twig index 8936a48d3e..6aeb3d88d6 100644 --- a/templates/php/docs/example.md.twig +++ b/templates/php/docs/example.md.twig @@ -20,4 +20,4 @@ $client {% endif %} ${{ service.name | caseCamel }} = new {{ service.name | caseUcfirst }}($client{% if service.globalParams | length %}{% for parameter in service.globalParams %}, {{ parameter | paramExample }}{% endfor %}{% endif %}); -$result = ${{ service.name | caseCamel }}->{{ method.name | caseCamel }}({% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}, {% endif %}{{ parameter | paramExample }}{% endif %}{% endfor %}); \ No newline at end of file +$result = ${{ service.name | caseCamel }}->{{ method.name | caseCamel }}({% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}, {% endif %}{% if parameter.enumValues | length > 0%}{{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseUpper | replace({'-': '',' ': '_'}) }}{% else%}{{ parameter | paramExample }}{% endif %}{% endif %}{% endfor %}); \ No newline at end of file diff --git a/templates/php/src/Enums/Enum.php.twig b/templates/php/src/Enums/Enum.php.twig index b3d809dd83..66c0afd792 100644 --- a/templates/php/src/Enums/Enum.php.twig +++ b/templates/php/src/Enums/Enum.php.twig @@ -6,6 +6,6 @@ class {{ enum.name | caseUcfirst | overrideIdentifier }} { {% for value in enum.enum %} {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - public const {{ key | caseUpper | replace({'-': ''})}} = '{{value}}'; + public const {{ key | caseUpper | replace({'-': '',' ': '_'})}} = '{{value}}'; {% endfor %} } diff --git a/templates/python/docs/example.md.twig b/templates/python/docs/example.md.twig index aa291a7058..537b25aec5 100644 --- a/templates/python/docs/example.md.twig +++ b/templates/python/docs/example.md.twig @@ -18,4 +18,4 @@ client = Client() {% endif %} {{ service.name | caseSnake }} = {{ service.name | caseUcfirst }}(client{% if service.globalParams | length %}{% for parameter in service.globalParams %}, {{ parameter | paramExample }}{% endfor %}{% endif %}) -result = {{ service.name | caseSnake }}.{{ method.name | caseSnake }}({% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}, {% endif %}{{ parameter | paramExample }}{% endif %}{% endfor %}) +result = {{ service.name | caseSnake }}.{{ method.name | caseSnake }}({% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}, {% endif %}{% if parameter.enumValues | length > 0%} {{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseUpper | replace({'-': '',' ': '_'}) }}{% else%}{{ parameter | paramExample }}{% endif %}{% endif %}{% endfor %}) diff --git a/templates/python/package/enums/enum.py.twig b/templates/python/package/enums/enum.py.twig index f7b6cbcfb7..0358d05498 100644 --- a/templates/python/package/enums/enum.py.twig +++ b/templates/python/package/enums/enum.py.twig @@ -3,5 +3,5 @@ from enum import Enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(Enum): {% for value in enum.enum %} {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseUpper | replace({'-': ''})}} = "{{ value }}" + {{ key | caseUpper | replace({'-': '',' ': ''})}} = "{{ value }}" {% endfor %} \ No newline at end of file diff --git a/templates/web/docs/example.md.twig b/templates/web/docs/example.md.twig index 0d58629632..37c5bcd63d 100644 --- a/templates/web/docs/example.md.twig +++ b/templates/web/docs/example.md.twig @@ -16,7 +16,7 @@ client {% endif %} {% if method.type == 'webAuth' %}// Go to OAuth provider login page {% endif %} -{% if method.type == 'webAuth' %}{% elseif method.type == 'location' %}const result = {% else %}const promise = {% endif %}{{ service.name | caseCamel }}.{{ method.name | caseCamel }}({% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}, {% endif %}{{ parameter | paramExample }}{% endif %}{% endfor %}); +{% if method.type == 'webAuth' %}{% elseif method.type == 'location' %}const result = {% else %}const promise = {% endif %}{{ service.name | caseCamel }}.{{ method.name | caseCamel }}({% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}, {% endif %}{% if parameter.enumValues | length > 0%}{{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseUcfirst | replace({'-': ''}) }}{% else%}{{ parameter | paramExample }}{% endif %}{% endif %}{% endfor %}); {% if method.type == 'webAuth' %}{% elseif method.type == 'location' %}console.log(result); // Resource URL{% else %}promise.then(function (response) { console.log(response); // Success From 405bceb4a8e8b2409936774444bc19ac3e8e43e5 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Mon, 24 Jul 2023 13:56:55 +0530 Subject: [PATCH 28/47] chore: fix doc generation flutter and web --- templates/flutter/docs/example.md.twig | 6 +++--- templates/web/docs/example.md.twig | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/flutter/docs/example.md.twig b/templates/flutter/docs/example.md.twig index db87c778c2..fe0c3d6290 100644 --- a/templates/flutter/docs/example.md.twig +++ b/templates/flutter/docs/example.md.twig @@ -23,7 +23,7 @@ void main() { // Init SDK {% endif %} {% if parameter.required %} - {{ parameter.name | caseCamel }}: {{ parameter | paramExample }}, + {{ parameter.name | caseCamel | overrideIdentifier}}:{% if parameter.enumValues | length > 0%} {{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseCamel | replace({'-': ''}) }}.value{% else %}{{ parameter | paramExample}} {% endif %}, {% endif %} {% endfor %}{% if method.parameters.all | length > 0 %} {% endif %}).then((bytes) { final file = File('path_to_file/filename.ext'); @@ -40,7 +40,7 @@ FutureBuilder( {% endif %} {% if parameter.required %} - {{ parameter.name | caseCamel | overrideIdentifier }}: {{ parameter | paramExample }}, + {{ parameter.name | caseCamel | overrideIdentifier}}:{% if parameter.enumValues | length > 0%} {{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseCamel | replace({'-': ''}) }}.value{% else %}{{ parameter | paramExample}} {% endif %}, {% endif %} {% endfor %}{% if method.parameters.all | length > 0 %} {% endif %} ), //works for both public file and private file, for private files you need to be logged in @@ -58,7 +58,7 @@ FutureBuilder( {% endif %} {% if parameter.required %} - {{ parameter.name | caseCamel }}: {{ parameter | paramExample }}, + {{ parameter.name | caseCamel | overrideIdentifier}}:{% if parameter.enumValues | length > 0%} {{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseCamel | replace({'-': ''}) }}.value{% else %}{{ parameter | paramExample}} {% endif %}, {% endif %} {% endfor %}{% if method.parameters.all | length > 0 %} {% endif %}); diff --git a/templates/web/docs/example.md.twig b/templates/web/docs/example.md.twig index 37c5bcd63d..ff1bc6f2cb 100644 --- a/templates/web/docs/example.md.twig +++ b/templates/web/docs/example.md.twig @@ -1,4 +1,4 @@ -import {{ '{' }} Client, {{service.name | caseUcfirst}} {{ '}' }} from "{{ language.params.npmPackage }}"; +import {{ '{' }} Client, {% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}{% endif %}{% if parameter.enumValues | length > 0%}{{parameter.enumName | caseUcfirst}},{% endif %}{% endif %}{% endfor %} {{service.name | caseUcfirst}} {{ '}' }} from "{{ language.params.npmPackage }}"; const client = new Client(); From 2267f4c80b9e319d7e9a06a2d44299fa0141a4d3 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Mon, 24 Jul 2023 19:14:25 +0530 Subject: [PATCH 29/47] chore: fix import doc deno python php dotnet --- src/SDK/Language/Deno.php | 2 +- templates/deno/mod.ts.twig | 6 ++++++ templates/dotnet/docs/example.md.twig | 3 +++ templates/php/docs/example.md.twig | 4 ++++ templates/python/docs/example.md.twig | 3 +++ 5 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/SDK/Language/Deno.php b/src/SDK/Language/Deno.php index d67a757dc1..468af6ca75 100644 --- a/src/SDK/Language/Deno.php +++ b/src/SDK/Language/Deno.php @@ -95,7 +95,7 @@ public function getFiles(): array ], [ 'scope' => 'enum', - 'destination' => 'src/enums/{{ enum.name | caseCamel }}.ts', + 'destination' => 'src/enums/{{ enum.name | caseDash }}.ts', 'template' => 'deno/src/enums/enum.ts.twig', ], ]; diff --git a/templates/deno/mod.ts.twig b/templates/deno/mod.ts.twig index 2878b63607..4d6e5bab73 100644 --- a/templates/deno/mod.ts.twig +++ b/templates/deno/mod.ts.twig @@ -8,6 +8,9 @@ import { {{spec.title | caseUcfirst}}Exception } from "./src/exception.ts"; {% for service in spec.services %} import { {{service.name | caseUcfirst}} } from "./src/services/{{service.name | caseDash}}.ts"; {% endfor %} +{% for enum in enums %} +import { {{enum | caseUcfirst}} } from "./src/enums/{{enum | caseDash}}.ts"; +{% endfor %} export { Client, @@ -20,6 +23,9 @@ export { {% for service in spec.services %} {{service.name | caseUcfirst}}, {% endfor %} +{% for enum in enums %} + {{enum | caseUcfirst}}, +{% endfor %} }; export type { Models } from "./src/models.d.ts"; diff --git a/templates/dotnet/docs/example.md.twig b/templates/dotnet/docs/example.md.twig index 48aea6186a..d6c1208e44 100644 --- a/templates/dotnet/docs/example.md.twig +++ b/templates/dotnet/docs/example.md.twig @@ -1,6 +1,9 @@ using {{ spec.title | caseUcfirst }}; using {{ spec.title | caseUcfirst }}.Services; using {{ spec.title | caseUcfirst }}.Models; +{% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}{% endif %} +using {{ spec.title | caseUcfirst }}.Enums; +{% endif %}{% endfor %} var client = new Client() {% if method.auth|length > 0 %} diff --git a/templates/php/docs/example.md.twig b/templates/php/docs/example.md.twig index 6aeb3d88d6..6430202fe5 100644 --- a/templates/php/docs/example.md.twig +++ b/templates/php/docs/example.md.twig @@ -5,6 +5,10 @@ use {{ spec.title | caseUcfirst }}\Client; use {{ spec.title | caseUcfirst }}\InputFile; {% endif %} use {{ spec.title | caseUcfirst }}\Services\{{ service.name | caseUcfirst }}; +{% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}{% endif %} +{% if parameter.enumValues | length > 0%}using {{ spec.title | caseUcfirst }}\Enums\{{parameter.enumName | caseUcfirst}};{% endif %} + +{% endif %}{% endfor %} $client = new Client(); diff --git a/templates/python/docs/example.md.twig b/templates/python/docs/example.md.twig index 537b25aec5..b3394e4c1c 100644 --- a/templates/python/docs/example.md.twig +++ b/templates/python/docs/example.md.twig @@ -3,6 +3,9 @@ from {{ spec.title | caseSnake }}.client import Client from {{ spec.title | caseSnake }}.input_file import InputFile {% endif %} from {{ spec.title | caseSnake }}.services.{{ service.name | caseSnake }} import {{ service.name | caseUcfirst }} +{% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}{% endif %} +{% if parameter.enumValues | length > 0%}from {{ spec.title | caseUcfirst }}.enums import {{parameter.enumName | caseUcfirst}},{% endif %} +{% endif %}{% endfor %} client = Client() From 70e78d617f1c5c8f2bd21fcf075f018f7e394787 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Mon, 24 Jul 2023 19:20:49 +0530 Subject: [PATCH 30/47] chore: fix node import --- templates/node/index.js.twig | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/templates/node/index.js.twig b/templates/node/index.js.twig index b82be23234..ddd31be72c 100644 --- a/templates/node/index.js.twig +++ b/templates/node/index.js.twig @@ -8,6 +8,9 @@ const {{spec.title | caseUcfirst}}Exception = require('./lib/exception.js'); {% for service in spec.services %} const {{service.name | caseUcfirst}} = require('./lib/services/{{service.name | caseDash}}.js'); {% endfor %} +{% for enum in enums %} +const {{enum | caseUcfirst}} = require("./lib/enums/{{enum | caseDash}}.js"); +{% endfor %} module.exports = { Client, @@ -19,5 +22,7 @@ module.exports = { {{spec.title | caseUcfirst}}Exception, {% for service in spec.services %} {{service.name | caseUcfirst}}, +{% endfor %}{% for enum in enums %} + {{ enum | caseUcfirst }}, {% endfor %} }; From 549ab8c017fd809263f0958383921227f1f45ddd Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Mon, 24 Jul 2023 19:33:47 +0530 Subject: [PATCH 31/47] chore: add import doc to kotlin and android --- templates/android/docs/java/example.md.twig | 4 ++++ templates/android/docs/kotlin/example.md.twig | 4 ++++ templates/kotlin/docs/java/example.md.twig | 4 ++++ templates/kotlin/docs/kotlin/example.md.twig | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/templates/android/docs/java/example.md.twig b/templates/android/docs/java/example.md.twig index 4c9a69105b..710cc6dcd6 100644 --- a/templates/android/docs/java/example.md.twig +++ b/templates/android/docs/java/example.md.twig @@ -4,6 +4,10 @@ import {{ sdk.namespace | caseDot }}.coroutines.CoroutineCallback; import {{ sdk.namespace | caseDot }}.models.InputFile; {% endif %} import {{ sdk.namespace | caseDot }}.services.{{ service.name | caseUcfirst }}; +{% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}{% endif %} +{% if parameter.enumValues | length > 0%}import {{ sdk.namespace | caseDot }}.enums.{{parameter.enumName | caseUcfirst}};{% endif %} + +{% endif %}{% endfor %} Client client = new Client(context) {% if method.auth|length > 0 %} diff --git a/templates/android/docs/kotlin/example.md.twig b/templates/android/docs/kotlin/example.md.twig index b44cc2b11b..4e7a1f7218 100644 --- a/templates/android/docs/kotlin/example.md.twig +++ b/templates/android/docs/kotlin/example.md.twig @@ -3,6 +3,10 @@ import {{ sdk.namespace | caseDot }}.Client import {{ sdk.namespace | caseDot }}.models.InputFile {% endif %} import {{ sdk.namespace | caseDot }}.services.{{ service.name | caseUcfirst }} +{% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}{% endif %} +{% if parameter.enumValues | length > 0%}import {{ sdk.namespace | caseDot }}.enums.{{parameter.enumName | caseUcfirst}};{% endif %} + +{% endif %}{% endfor %} val client = Client(context) {% if method.auth|length > 0 %} diff --git a/templates/kotlin/docs/java/example.md.twig b/templates/kotlin/docs/java/example.md.twig index a5e622ca41..d597795bb3 100644 --- a/templates/kotlin/docs/java/example.md.twig +++ b/templates/kotlin/docs/java/example.md.twig @@ -4,6 +4,10 @@ import {{ sdk.namespace | caseDot }}.coroutines.CoroutineCallback; import {{ sdk.namespace | caseDot }}.models.InputFile; {% endif %} import {{ sdk.namespace | caseDot }}.services.{{ service.name | caseUcfirst }}; +{% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}{% endif %} +{% if parameter.enumValues | length > 0%}import {{ sdk.namespace | caseDot }}.enums.{{parameter.enumName | caseUcfirst}};{% endif %} + +{% endif %}{% endfor %} Client client = new Client() {% if method.auth|length > 0 %} diff --git a/templates/kotlin/docs/kotlin/example.md.twig b/templates/kotlin/docs/kotlin/example.md.twig index cc662fecb2..8e48364ea9 100644 --- a/templates/kotlin/docs/kotlin/example.md.twig +++ b/templates/kotlin/docs/kotlin/example.md.twig @@ -3,6 +3,10 @@ import {{ sdk.namespace | caseDot }}.Client import {{ sdk.namespace | caseDot }}.models.InputFile {% endif %} import {{ sdk.namespace | caseDot }}.services.{{ service.name | caseUcfirst }} +{% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}{% endif %} +{% if parameter.enumValues | length > 0%}import {{ sdk.namespace | caseDot }}.enums.{{parameter.enumName | caseUcfirst}};{% endif %} + +{% endif %}{% endfor %} val client = Client(context) {% if method.auth|length > 0 %} From fb177454fdc1b2b993494c78cf91c8e933279ab9 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Mon, 24 Jul 2023 20:02:39 +0530 Subject: [PATCH 32/47] feat: swift +App --- src/SDK/Language/Apple.php | 5 +++++ src/SDK/Language/Swift.php | 5 +++++ templates/swift/Sources/Enums/Enum.swift.twig | 5 +++++ templates/swift/docs/example.md.twig | 2 +- 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 templates/swift/Sources/Enums/Enum.swift.twig diff --git a/src/SDK/Language/Apple.php b/src/SDK/Language/Apple.php index e3515de48b..eb452ce1ef 100644 --- a/src/SDK/Language/Apple.php +++ b/src/SDK/Language/Apple.php @@ -60,6 +60,11 @@ public function getFiles(): array 'destination' => '/Sources/{{ spec.title | caseUcfirst}}/WebSockets/WebSocketClientError.swift', 'template' => '/swift/Sources/WebSockets/WebSocketClientError.swift.twig', ], + [ + 'scope' => 'enum', + 'destination' => '/Sources/{{ spec.title | caseUcfirst}}/Enums/{{ enum.name | caseUcfirst }}.swift', + 'template' => '/swift/Sources/Enums/Enum.swift.twig', + ], // Config for project example-swiftui [ 'scope' => 'default', diff --git a/src/SDK/Language/Swift.php b/src/SDK/Language/Swift.php index 9b2e08798d..504214efd8 100644 --- a/src/SDK/Language/Swift.php +++ b/src/SDK/Language/Swift.php @@ -284,6 +284,11 @@ public function getFiles(): array 'destination' => '/Sources/{{ spec.title | caseUcfirst}}Models/{{ definition.name | caseUcfirst }}.swift', 'template' => '/swift/Sources/Models/Model.swift.twig', ], + [ + 'scope' => 'enum', + 'destination' => '/Sources/{{ spec.title | caseUcfirst}}/Enums/{{ enum.name | caseUcfirst }}.swift', + 'template' => '/swift/Sources/Enums/Enum.swift.twig', + ] ]; } diff --git a/templates/swift/Sources/Enums/Enum.swift.twig b/templates/swift/Sources/Enums/Enum.swift.twig new file mode 100644 index 0000000000..341164ab4e --- /dev/null +++ b/templates/swift/Sources/Enums/Enum.swift.twig @@ -0,0 +1,5 @@ +enum {{ enum.name | caseUcfirst | overrideIdentifier }} : String { +{% for value in enum.enum %} + {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} + case {{ key | caseCamel | replace({'-': ''})}} = '{{ value }}' +{% endfor %} diff --git a/templates/swift/docs/example.md.twig b/templates/swift/docs/example.md.twig index 2d4f478db7..afb7b368cd 100644 --- a/templates/swift/docs/example.md.twig +++ b/templates/swift/docs/example.md.twig @@ -15,7 +15,7 @@ let {{ service.name | caseCamel }} = {{ service.name | caseUcfirst }}(client{% i let {% if method.type == 'webAuth' %}success{% elseif method.type == 'location' %}byteBuffer{% elseif method.responseModel | length == 0 %}result{% else %}{{ method.responseModel | caseCamel | escapeKeyword }}{% endif %} = try await {{ service.name | caseCamel }}.{{ method.name | caseCamel }}({% if method.parameters.all | filter((param) => param.required) | length == 0 %}){{ '\n' }}{% endif %} {% for parameter in method.parameters.all | filter((parameter) => parameter.required) %} - {{parameter.name}}: {{ parameter | paramExample | escapeKeyword }}{% if not loop.last %},{% endif %} + {{parameter.name}}: {% if parameter.enumValues | length > 0%}{{parameter.enumName}}.{{(parameter.enumKeys[0] ?? parameter.enumValues[0]) | caseUcfirst | replace({'-': ''}) }}{% else%}{{ parameter | paramExample | escapeKeyword }}{% endif %}{% if not loop.last %},{% endif %} {% if loop.last %} ) From 0969f0cbbbf766d3f8e4ab370b00654402cbd717 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Wed, 26 Jul 2023 10:45:03 +0530 Subject: [PATCH 33/47] refactor: single quotes to double quotes in kotlin --- .../library/src/main/java/io/appwrite/enums/Enum.kt.twig | 2 +- templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig b/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig index 47576854b2..14d2c11690 100644 --- a/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig +++ b/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig @@ -3,7 +3,7 @@ package {{ sdk.namespace | caseDot }}.enums enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(val value: String) { {% for value in enum.enum %} {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseUpper | replace({'-': '',' ':'_'})}}('{{value}}'){% if not loop.last %}, + {{ key | caseUpper | replace({'-': '',' ':'_'})}}("{{value}}"){% if not loop.last %}, {% endif %} {% endfor %} diff --git a/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig b/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig index a56055ce52..b81ab72e66 100644 --- a/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig +++ b/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig @@ -3,7 +3,7 @@ package {{ sdk.namespace | caseDot }}.enums enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(val value: String) { {% for value in enum.enum %} {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseUpper | replace({'-': '',' ': '_'})}}('{{value}}'){% if not loop.last %}, + {{ key | caseUpper | replace({'-': '',' ': '_'})}}("{{value}}"){% if not loop.last %}, {% endif %} {% endfor %} From ca3882f8c38bfda90c7f57d36ffb6a35dd5eb03b Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Wed, 26 Jul 2023 10:48:28 +0530 Subject: [PATCH 34/47] chore: remove ; --- templates/android/docs/kotlin/example.md.twig | 2 +- templates/kotlin/docs/kotlin/example.md.twig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/android/docs/kotlin/example.md.twig b/templates/android/docs/kotlin/example.md.twig index 4e7a1f7218..2b0c444398 100644 --- a/templates/android/docs/kotlin/example.md.twig +++ b/templates/android/docs/kotlin/example.md.twig @@ -4,7 +4,7 @@ import {{ sdk.namespace | caseDot }}.models.InputFile {% endif %} import {{ sdk.namespace | caseDot }}.services.{{ service.name | caseUcfirst }} {% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}{% endif %} -{% if parameter.enumValues | length > 0%}import {{ sdk.namespace | caseDot }}.enums.{{parameter.enumName | caseUcfirst}};{% endif %} +{% if parameter.enumValues | length > 0%}import {{ sdk.namespace | caseDot }}.enums.{{parameter.enumName | caseUcfirst}}{% endif %} {% endif %}{% endfor %} diff --git a/templates/kotlin/docs/kotlin/example.md.twig b/templates/kotlin/docs/kotlin/example.md.twig index 8e48364ea9..16e8d525f0 100644 --- a/templates/kotlin/docs/kotlin/example.md.twig +++ b/templates/kotlin/docs/kotlin/example.md.twig @@ -4,7 +4,7 @@ import {{ sdk.namespace | caseDot }}.models.InputFile {% endif %} import {{ sdk.namespace | caseDot }}.services.{{ service.name | caseUcfirst }} {% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}{% endif %} -{% if parameter.enumValues | length > 0%}import {{ sdk.namespace | caseDot }}.enums.{{parameter.enumName | caseUcfirst}};{% endif %} +{% if parameter.enumValues | length > 0%}import {{ sdk.namespace | caseDot }}.enums.{{parameter.enumName | caseUcfirst}}{% endif %} {% endif %}{% endfor %} From cda11c8df942e687fbb3a6f6a490a09271cfe02e Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Wed, 26 Jul 2023 10:52:26 +0530 Subject: [PATCH 35/47] chore: add readonly c# --- templates/dotnet/src/Appwrite/Enums/Enums.cs.twig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig index 6ecf1f02d7..12a73f0046 100644 --- a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig +++ b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig @@ -6,7 +6,8 @@ namespace {{ spec.title | caseUcfirst }}.Enums { {% for value in enum.enum %} {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - public static string {{ key | caseUcfirst | replace({'-': ''}) }} = "{{ value }}", + public static readonly string {{ key | caseUcfirst | replace({'-': ''}) }} => "{{ value }}" + {% if not loop.last %},{% endif %} {% endfor %} } } \ No newline at end of file From d3b42203f0ad6b52f9e7e82845724f078d509d64 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Wed, 26 Jul 2023 10:57:11 +0530 Subject: [PATCH 36/47] Strip space instead of adding underscore --- .../library/src/main/java/io/appwrite/enums/Enum.kt.twig | 2 +- templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig b/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig index 14d2c11690..71959357e6 100644 --- a/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig +++ b/templates/android/library/src/main/java/io/appwrite/enums/Enum.kt.twig @@ -3,7 +3,7 @@ package {{ sdk.namespace | caseDot }}.enums enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(val value: String) { {% for value in enum.enum %} {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseUpper | replace({'-': '',' ':'_'})}}("{{value}}"){% if not loop.last %}, + {{ key | caseUpper | replace({'-': '',' ':''})}}("{{value}}"){% if not loop.last %}, {% endif %} {% endfor %} diff --git a/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig b/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig index b81ab72e66..1322953dec 100644 --- a/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig +++ b/templates/kotlin/src/main/kotlin/io/appwrite/enums/Enum.kt.twig @@ -3,7 +3,7 @@ package {{ sdk.namespace | caseDot }}.enums enum class {{ enum.name | caseUcfirst | overrideIdentifier }}(val value: String) { {% for value in enum.enum %} {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - {{ key | caseUpper | replace({'-': '',' ': '_'})}}("{{value}}"){% if not loop.last %}, + {{ key | caseUpper | replace({'-': '',' ': ''})}}("{{value}}"){% if not loop.last %}, {% endif %} {% endfor %} From bded653b9bf3272ac629702938bbc62761a5ddc7 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Wed, 26 Jul 2023 11:18:48 +0530 Subject: [PATCH 37/47] refactor: convert this to module --- src/SDK/Language/Swift.php | 2 +- templates/swift/docs/example.md.twig | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/SDK/Language/Swift.php b/src/SDK/Language/Swift.php index 504214efd8..a4d7318082 100644 --- a/src/SDK/Language/Swift.php +++ b/src/SDK/Language/Swift.php @@ -286,7 +286,7 @@ public function getFiles(): array ], [ 'scope' => 'enum', - 'destination' => '/Sources/{{ spec.title | caseUcfirst}}/Enums/{{ enum.name | caseUcfirst }}.swift', + 'destination' => '/Sources/{{ spec.title | caseUcfirst}}Enums/{{ enum.name | caseUcfirst }}.swift', 'template' => '/swift/Sources/Enums/Enum.swift.twig', ] ]; diff --git a/templates/swift/docs/example.md.twig b/templates/swift/docs/example.md.twig index afb7b368cd..31eca46039 100644 --- a/templates/swift/docs/example.md.twig +++ b/templates/swift/docs/example.md.twig @@ -1,4 +1,9 @@ import Appwrite +{% for parameter in method.parameters.all | filter((parameter) => parameter.required) %} +{% if parameter.enumValues | length > 0 %} +import AppwriteEnums +{% endif %} +{% endfor %} let client = Client() {% if method.auth|length > 0 %} From 899b5b837c240ff4e7feadbd09908e953b33415f Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Tue, 1 Aug 2023 11:12:30 +0530 Subject: [PATCH 38/47] add Type support flutter,dart --- templates/dart/lib/services/service.dart.twig | 2 +- templates/flutter/lib/services/service.dart.twig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/dart/lib/services/service.dart.twig b/templates/dart/lib/services/service.dart.twig index 00141e5a35..ff6ee2432f 100644 --- a/templates/dart/lib/services/service.dart.twig +++ b/templates/dart/lib/services/service.dart.twig @@ -1,5 +1,5 @@ part of {{ language.params.packageName }}; -{% macro parameter(parameter) %}{% if parameter.required %}required {% endif %}{{ parameter | typeName }}{% if not parameter.required or parameter.nullable %}?{% endif %} {{ parameter.name | caseCamel | overrideIdentifier }}{% endmacro %} +{% macro parameter(parameter) %}{% if parameter.required %}required {% endif %}{{ parameter.enumName ?? parameter | typeName }}{% if not parameter.required or parameter.nullable %}?{% endif %} {{ parameter.name | caseCamel | overrideIdentifier }}{% endmacro %} {% macro method_parameters(parameters, consumes) %} {% if parameters|length > 0 %}{{ '{' }}{% for parameter in parameters %}{{ _self.parameter(parameter) }}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in consumes %}, Function(UploadProgress)? onProgress{% endif %}{{ '}' }}{% endif %} {% endmacro %} diff --git a/templates/flutter/lib/services/service.dart.twig b/templates/flutter/lib/services/service.dart.twig index 0cc609d035..ce5a7bbee4 100644 --- a/templates/flutter/lib/services/service.dart.twig +++ b/templates/flutter/lib/services/service.dart.twig @@ -1,5 +1,5 @@ part of {{ language.params.packageName }}; -{% macro parameter(parameter) %}{% if parameter.required %}required {% endif %}{{ parameter | typeName }}{% if not parameter.required or parameter.nullable %}?{% endif %} {{ parameter.name | caseCamel | overrideIdentifier }}{% endmacro %} +{% macro parameter(parameter) %}{% if parameter.required %}required {% endif %}{{ parameter.enumName ?? parameter | typeName }}{% if not parameter.required or parameter.nullable %}?{% endif %} {{ parameter.name | caseCamel | overrideIdentifier }}{% endmacro %} {% macro method_parameters(parameters, consumes) %} {% if parameters|length > 0 %}{{ '{' }}{% for parameter in parameters %}{{ _self.parameter(parameter) }}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in consumes %}, Function(UploadProgress)? onProgress{% endif %}{{ '}' }}{% endif %} {% endmacro %} From 328fa6bbbd51459f74a0478f8248198ab86f23e8 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Tue, 1 Aug 2023 13:19:20 +0530 Subject: [PATCH 39/47] add enum types in services --- src/SDK/Language/Dart.php | 4 ++++ src/SDK/Language/Deno.php | 4 ++++ src/SDK/Language/DotNet.php | 4 ++++ src/SDK/Language/JS.php | 4 ++++ src/SDK/Language/Kotlin.php | 4 ++++ src/SDK/Language/PHP.php | 4 ++++ src/SDK/Language/Swift.php | 4 ++++ src/SDK/Language/Web.php | 4 ++++ templates/dart/lib/services/service.dart.twig | 2 +- templates/flutter/lib/services/service.dart.twig | 2 +- templates/php/docs/example.md.twig | 2 +- templates/php/src/Services/Service.php.twig | 3 +++ 12 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/SDK/Language/Dart.php b/src/SDK/Language/Dart.php index 753d6259fd..bca1f3bbef 100644 --- a/src/SDK/Language/Dart.php +++ b/src/SDK/Language/Dart.php @@ -121,6 +121,10 @@ public function getIdentifierOverrides(): array */ public function getTypeName(array $parameter): string { + if (isset($parameter['enumName'])) { + return $parameter['enumName'] . ' '; + } + switch ($parameter['type']) { case self::TYPE_INTEGER: return 'int'; diff --git a/src/SDK/Language/Deno.php b/src/SDK/Language/Deno.php index 468af6ca75..84327921b3 100644 --- a/src/SDK/Language/Deno.php +++ b/src/SDK/Language/Deno.php @@ -107,6 +107,10 @@ public function getFiles(): array */ public function getTypeName(array $parameter): string { + if (isset($parameter['enumName'])) { + return $parameter['enumName']; + } + switch ($parameter['type']) { case self::TYPE_INTEGER: return 'number'; diff --git a/src/SDK/Language/DotNet.php b/src/SDK/Language/DotNet.php index 6b34dfcc3e..84c92e7ad4 100644 --- a/src/SDK/Language/DotNet.php +++ b/src/SDK/Language/DotNet.php @@ -151,6 +151,10 @@ public function getIdentifierOverrides(): array */ public function getTypeName(array $parameter): string { + if (isset($parameter['enumName'])) { + return $parameter['enumName']; + } + switch ($parameter['type']) { case self::TYPE_INTEGER: return 'long'; diff --git a/src/SDK/Language/JS.php b/src/SDK/Language/JS.php index c41727e36d..d3d51b1337 100644 --- a/src/SDK/Language/JS.php +++ b/src/SDK/Language/JS.php @@ -124,6 +124,10 @@ public function getIdentifierOverrides(): array */ public function getTypeName(array $parameter): string { + if (isset($parameter['enumName'])) { + return $parameter['enumName']; + } + switch ($parameter['type']) { case self::TYPE_INTEGER: case self::TYPE_NUMBER: diff --git a/src/SDK/Language/Kotlin.php b/src/SDK/Language/Kotlin.php index f5db8fa96b..ac0ca0ebd4 100644 --- a/src/SDK/Language/Kotlin.php +++ b/src/SDK/Language/Kotlin.php @@ -105,6 +105,10 @@ public function getIdentifierOverrides(): array */ public function getTypeName(array $parameter): string { + if (isset($parameter['enumName'])) { + return $parameter['enumName']; + } + switch ($parameter['type']) { case self::TYPE_INTEGER: return 'Long'; diff --git a/src/SDK/Language/PHP.php b/src/SDK/Language/PHP.php index bb81a6ea60..750da6cdd8 100644 --- a/src/SDK/Language/PHP.php +++ b/src/SDK/Language/PHP.php @@ -227,6 +227,10 @@ public function getFiles(): array */ public function getTypeName(array $parameter): string { + if (isset($parameter['enumName'])) { + return $parameter['enumName'] . ' '; + } + switch ($parameter['type']) { case self::TYPE_STRING: $type = 'string'; diff --git a/src/SDK/Language/Swift.php b/src/SDK/Language/Swift.php index a4d7318082..ed08dc9692 100644 --- a/src/SDK/Language/Swift.php +++ b/src/SDK/Language/Swift.php @@ -298,6 +298,10 @@ public function getFiles(): array */ public function getTypeName(array $parameter): string { + if (isset($parameter['enumName'])) { + return $parameter['enumName']; + } + switch ($parameter['type']) { case self::TYPE_INTEGER: return 'Int'; diff --git a/src/SDK/Language/Web.php b/src/SDK/Language/Web.php index d6838af6cb..08d187a73e 100644 --- a/src/SDK/Language/Web.php +++ b/src/SDK/Language/Web.php @@ -179,6 +179,10 @@ public function getParamExample(array $param): string public function getTypeName(array $parameter, array $method = []): string { + if (isset($parameter['enumName'])) { + return $parameter['enumName']; + } + switch ($parameter['type']) { case self::TYPE_INTEGER: case self::TYPE_NUMBER: diff --git a/templates/dart/lib/services/service.dart.twig b/templates/dart/lib/services/service.dart.twig index ff6ee2432f..00141e5a35 100644 --- a/templates/dart/lib/services/service.dart.twig +++ b/templates/dart/lib/services/service.dart.twig @@ -1,5 +1,5 @@ part of {{ language.params.packageName }}; -{% macro parameter(parameter) %}{% if parameter.required %}required {% endif %}{{ parameter.enumName ?? parameter | typeName }}{% if not parameter.required or parameter.nullable %}?{% endif %} {{ parameter.name | caseCamel | overrideIdentifier }}{% endmacro %} +{% macro parameter(parameter) %}{% if parameter.required %}required {% endif %}{{ parameter | typeName }}{% if not parameter.required or parameter.nullable %}?{% endif %} {{ parameter.name | caseCamel | overrideIdentifier }}{% endmacro %} {% macro method_parameters(parameters, consumes) %} {% if parameters|length > 0 %}{{ '{' }}{% for parameter in parameters %}{{ _self.parameter(parameter) }}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in consumes %}, Function(UploadProgress)? onProgress{% endif %}{{ '}' }}{% endif %} {% endmacro %} diff --git a/templates/flutter/lib/services/service.dart.twig b/templates/flutter/lib/services/service.dart.twig index ce5a7bbee4..0cc609d035 100644 --- a/templates/flutter/lib/services/service.dart.twig +++ b/templates/flutter/lib/services/service.dart.twig @@ -1,5 +1,5 @@ part of {{ language.params.packageName }}; -{% macro parameter(parameter) %}{% if parameter.required %}required {% endif %}{{ parameter.enumName ?? parameter | typeName }}{% if not parameter.required or parameter.nullable %}?{% endif %} {{ parameter.name | caseCamel | overrideIdentifier }}{% endmacro %} +{% macro parameter(parameter) %}{% if parameter.required %}required {% endif %}{{ parameter | typeName }}{% if not parameter.required or parameter.nullable %}?{% endif %} {{ parameter.name | caseCamel | overrideIdentifier }}{% endmacro %} {% macro method_parameters(parameters, consumes) %} {% if parameters|length > 0 %}{{ '{' }}{% for parameter in parameters %}{{ _self.parameter(parameter) }}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in consumes %}, Function(UploadProgress)? onProgress{% endif %}{{ '}' }}{% endif %} {% endmacro %} diff --git a/templates/php/docs/example.md.twig b/templates/php/docs/example.md.twig index 6430202fe5..ab296d8da8 100644 --- a/templates/php/docs/example.md.twig +++ b/templates/php/docs/example.md.twig @@ -6,7 +6,7 @@ use {{ spec.title | caseUcfirst }}\InputFile; {% endif %} use {{ spec.title | caseUcfirst }}\Services\{{ service.name | caseUcfirst }}; {% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}{% endif %} -{% if parameter.enumValues | length > 0%}using {{ spec.title | caseUcfirst }}\Enums\{{parameter.enumName | caseUcfirst}};{% endif %} +{% if parameter.enumValues | length > 0%}use {{ spec.title | caseUcfirst }}\Enums\{{parameter.enumName | caseUcfirst}};{% endif %} {% endif %}{% endfor %} diff --git a/templates/php/src/Services/Service.php.twig b/templates/php/src/Services/Service.php.twig index 3e110cffea..cc8dbf65b1 100644 --- a/templates/php/src/Services/Service.php.twig +++ b/templates/php/src/Services/Service.php.twig @@ -6,6 +6,9 @@ use {{ spec.title | caseUcfirst }}\{{spec.title | caseUcfirst}}Exception; use {{ spec.title | caseUcfirst }}\Client; use {{ spec.title | caseUcfirst }}\Service; use {{ spec.title | caseUcfirst }}\InputFile; +{% for method in service.methods %}{% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}{% endif %}{% if parameter.enumValues | length > 0%}use {{ spec.title | caseUcfirst }}\Enums\{{parameter.enumName | caseUcfirst}}; +{% endif %} +{% endif %}{% endfor %}{% endfor %} class {{ service.name | caseUcfirst }} extends Service { From 1d827eecc80a592beeb5cf16aa950e58ea79a95d Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Thu, 3 Aug 2023 11:21:27 +0530 Subject: [PATCH 40/47] fix imports php --- templates/php/src/Services/Service.php.twig | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/templates/php/src/Services/Service.php.twig b/templates/php/src/Services/Service.php.twig index cc8dbf65b1..c6b58a3673 100644 --- a/templates/php/src/Services/Service.php.twig +++ b/templates/php/src/Services/Service.php.twig @@ -6,8 +6,7 @@ use {{ spec.title | caseUcfirst }}\{{spec.title | caseUcfirst}}Exception; use {{ spec.title | caseUcfirst }}\Client; use {{ spec.title | caseUcfirst }}\Service; use {{ spec.title | caseUcfirst }}\InputFile; -{% for method in service.methods %}{% for parameter in method.parameters.all %}{% if parameter.required %}{% if not loop.first %}{% endif %}{% if parameter.enumValues | length > 0%}use {{ spec.title | caseUcfirst }}\Enums\{{parameter.enumName | caseUcfirst}}; -{% endif %} +{% for method in service.methods %}{% for parameter in method.parameters.all %}{% if not loop.first %}{% endif %}{% if parameter.enumValues | length > 0%}use {{ spec.title | caseUcfirst }}\Enums\{{parameter.enumName | caseUcfirst}}; {% endif %}{% endfor %}{% endfor %} class {{ service.name | caseUcfirst }} extends Service From 5e6e4ee342c31e20007524f901ef52bf78e1a276 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Fri, 4 Aug 2023 19:42:16 +0530 Subject: [PATCH 41/47] chore: revert changes --- src/SDK/Language/Dart.php | 4 ---- src/SDK/Language/DotNet.php | 3 --- src/SDK/Language/JS.php | 3 --- src/SDK/Language/Kotlin.php | 3 --- src/SDK/Language/PHP.php | 3 --- src/SDK/Language/Web.php | 4 ---- 6 files changed, 20 deletions(-) diff --git a/src/SDK/Language/Dart.php b/src/SDK/Language/Dart.php index bca1f3bbef..753d6259fd 100644 --- a/src/SDK/Language/Dart.php +++ b/src/SDK/Language/Dart.php @@ -121,10 +121,6 @@ public function getIdentifierOverrides(): array */ public function getTypeName(array $parameter): string { - if (isset($parameter['enumName'])) { - return $parameter['enumName'] . ' '; - } - switch ($parameter['type']) { case self::TYPE_INTEGER: return 'int'; diff --git a/src/SDK/Language/DotNet.php b/src/SDK/Language/DotNet.php index 84c92e7ad4..ef8e19aad8 100644 --- a/src/SDK/Language/DotNet.php +++ b/src/SDK/Language/DotNet.php @@ -151,9 +151,6 @@ public function getIdentifierOverrides(): array */ public function getTypeName(array $parameter): string { - if (isset($parameter['enumName'])) { - return $parameter['enumName']; - } switch ($parameter['type']) { case self::TYPE_INTEGER: diff --git a/src/SDK/Language/JS.php b/src/SDK/Language/JS.php index d3d51b1337..a4a0ba64cf 100644 --- a/src/SDK/Language/JS.php +++ b/src/SDK/Language/JS.php @@ -124,9 +124,6 @@ public function getIdentifierOverrides(): array */ public function getTypeName(array $parameter): string { - if (isset($parameter['enumName'])) { - return $parameter['enumName']; - } switch ($parameter['type']) { case self::TYPE_INTEGER: diff --git a/src/SDK/Language/Kotlin.php b/src/SDK/Language/Kotlin.php index ac0ca0ebd4..df2329e21a 100644 --- a/src/SDK/Language/Kotlin.php +++ b/src/SDK/Language/Kotlin.php @@ -105,9 +105,6 @@ public function getIdentifierOverrides(): array */ public function getTypeName(array $parameter): string { - if (isset($parameter['enumName'])) { - return $parameter['enumName']; - } switch ($parameter['type']) { case self::TYPE_INTEGER: diff --git a/src/SDK/Language/PHP.php b/src/SDK/Language/PHP.php index 750da6cdd8..c3f505e01b 100644 --- a/src/SDK/Language/PHP.php +++ b/src/SDK/Language/PHP.php @@ -227,9 +227,6 @@ public function getFiles(): array */ public function getTypeName(array $parameter): string { - if (isset($parameter['enumName'])) { - return $parameter['enumName'] . ' '; - } switch ($parameter['type']) { case self::TYPE_STRING: diff --git a/src/SDK/Language/Web.php b/src/SDK/Language/Web.php index 08d187a73e..d6838af6cb 100644 --- a/src/SDK/Language/Web.php +++ b/src/SDK/Language/Web.php @@ -179,10 +179,6 @@ public function getParamExample(array $param): string public function getTypeName(array $parameter, array $method = []): string { - if (isset($parameter['enumName'])) { - return $parameter['enumName']; - } - switch ($parameter['type']) { case self::TYPE_INTEGER: case self::TYPE_NUMBER: From f707669f631c5e3ef4c469fbed77a7bba7893c81 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Fri, 4 Aug 2023 19:46:23 +0530 Subject: [PATCH 42/47] chore: revert changes --- templates/php/src/Services/Service.php.twig | 2 -- 1 file changed, 2 deletions(-) diff --git a/templates/php/src/Services/Service.php.twig b/templates/php/src/Services/Service.php.twig index c6b58a3673..3e110cffea 100644 --- a/templates/php/src/Services/Service.php.twig +++ b/templates/php/src/Services/Service.php.twig @@ -6,8 +6,6 @@ use {{ spec.title | caseUcfirst }}\{{spec.title | caseUcfirst}}Exception; use {{ spec.title | caseUcfirst }}\Client; use {{ spec.title | caseUcfirst }}\Service; use {{ spec.title | caseUcfirst }}\InputFile; -{% for method in service.methods %}{% for parameter in method.parameters.all %}{% if not loop.first %}{% endif %}{% if parameter.enumValues | length > 0%}use {{ spec.title | caseUcfirst }}\Enums\{{parameter.enumName | caseUcfirst}}; -{% endif %}{% endfor %}{% endfor %} class {{ service.name | caseUcfirst }} extends Service { From cfef3225e8f98e4c417764f7abfe91a489f661fe Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi <62933155+2002Bishwajeet@users.noreply.github.com> Date: Fri, 4 Aug 2023 20:14:25 +0530 Subject: [PATCH 43/47] Update templates/dotnet/src/Appwrite/Enums/Enums.cs.twig Co-authored-by: Aditya Oberai --- templates/dotnet/src/Appwrite/Enums/Enums.cs.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig index 12a73f0046..6fc3aca9fe 100644 --- a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig +++ b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig @@ -6,7 +6,7 @@ namespace {{ spec.title | caseUcfirst }}.Enums { {% for value in enum.enum %} {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} - public static readonly string {{ key | caseUcfirst | replace({'-': ''}) }} => "{{ value }}" + public static string {{ key | caseUcfirst | replace({'-': ''}) }} => "{{ value }}"; {% if not loop.last %},{% endif %} {% endfor %} } From 4dbd72cb5220c370a760dfd9a9c965f3455cc498 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi <62933155+2002Bishwajeet@users.noreply.github.com> Date: Fri, 4 Aug 2023 20:14:34 +0530 Subject: [PATCH 44/47] Update templates/dotnet/src/Appwrite/Enums/Enums.cs.twig Co-authored-by: Aditya Oberai --- templates/dotnet/src/Appwrite/Enums/Enums.cs.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig index 6fc3aca9fe..9eb104dc67 100644 --- a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig +++ b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig @@ -7,7 +7,7 @@ namespace {{ spec.title | caseUcfirst }}.Enums {% for value in enum.enum %} {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} public static string {{ key | caseUcfirst | replace({'-': ''}) }} => "{{ value }}"; - {% if not loop.last %},{% endif %} + {% if not loop.last %}{% endif %} {% endfor %} } } \ No newline at end of file From 2ff035cea1aaae26e30968e6731faa553b7158a8 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi <62933155+2002Bishwajeet@users.noreply.github.com> Date: Fri, 4 Aug 2023 20:22:51 +0530 Subject: [PATCH 45/47] chore: remove empty last loop --- templates/dotnet/src/Appwrite/Enums/Enums.cs.twig | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig index 9eb104dc67..2d04bb3a68 100644 --- a/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig +++ b/templates/dotnet/src/Appwrite/Enums/Enums.cs.twig @@ -7,7 +7,6 @@ namespace {{ spec.title | caseUcfirst }}.Enums {% for value in enum.enum %} {% set key = enum.keys is empty ? value : enum.keys[loop.index0] %} public static string {{ key | caseUcfirst | replace({'-': ''}) }} => "{{ value }}"; - {% if not loop.last %}{% endif %} {% endfor %} } -} \ No newline at end of file +} From f9da819284a086cdaa588abea8a3d29d14503755 Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Fri, 11 Aug 2023 23:34:38 +0530 Subject: [PATCH 46/47] fix enum addition when found in body --- src/Spec/Swagger2.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Spec/Swagger2.php b/src/Spec/Swagger2.php index 4cad9f1eb8..f0025f2460 100644 --- a/src/Spec/Swagger2.php +++ b/src/Spec/Swagger2.php @@ -259,6 +259,12 @@ public function getMethods($service) $value['default'] = (empty($value['default'])) ? new stdClass() : $value['default']; } + if (isset($value['enum'])) { + $param['enumValues'] = $value['enum']; + $param['enumName'] = $value['x-enum-name']; + $param['enumKeys'] = $value['x-enum-keys']; + } + $param['default'] = (is_array($value['default']) || $value['default'] instanceof stdClass) ? json_encode($value['default']) : $value['default']; $output['parameters']['body'][] = $param; From 453ffdb3277bf6ce014e57e58dc8f90044e0c3ff Mon Sep 17 00:00:00 2001 From: Bishwajeet Parhi Date: Mon, 14 Aug 2023 17:00:46 +0530 Subject: [PATCH 47/47] fix: duplicate enums --- src/Spec/Swagger2.php | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/Spec/Swagger2.php b/src/Spec/Swagger2.php index f0025f2460..db436ac931 100644 --- a/src/Spec/Swagger2.php +++ b/src/Spec/Swagger2.php @@ -245,14 +245,15 @@ public function getMethods($service) $bodyRequired = $parameter['schema']['required'] ?? []; foreach ($bodyProperties as $key => $value) { - $param['name'] = $key; - $param['type'] = $value['type'] ?? null; - $param['description'] = $value['description'] ?? ''; - $param['required'] = (in_array($key, $bodyRequired)); - $param['example'] = $value['x-example'] ?? null; - $param['isUploadID'] = $value['x-upload-id'] ?? false; - $param['nullable'] = $value['x-nullable'] ?? false; - $param['array'] = [ + $temp = $param; + $temp['name'] = $key; + $temp['type'] = $value['type'] ?? null; + $temp['description'] = $value['description'] ?? ''; + $temp['required'] = (in_array($key, $bodyRequired)); + $temp['example'] = $value['x-example'] ?? null; + $temp['isUploadID'] = $value['x-upload-id'] ?? false; + $temp['nullable'] = $value['x-nullable'] ?? false; + $temp['array'] = [ 'type' => $value['items']['type'] ?? '', ]; if ($value['type'] === 'object' && is_array($value['default'])) { @@ -260,15 +261,15 @@ public function getMethods($service) } if (isset($value['enum'])) { - $param['enumValues'] = $value['enum']; - $param['enumName'] = $value['x-enum-name']; - $param['enumKeys'] = $value['x-enum-keys']; + $temp['enumValues'] = $value['enum']; + $temp['enumName'] = $value['x-enum-name']; + $temp['enumKeys'] = $value['x-enum-keys']; } - $param['default'] = (is_array($value['default']) || $value['default'] instanceof stdClass) ? json_encode($value['default']) : $value['default']; + $temp['default'] = (is_array($value['default']) || $value['default'] instanceof stdClass) ? json_encode($value['default']) : $value['default']; - $output['parameters']['body'][] = $param; - $output['parameters']['all'][] = $param; + $output['parameters']['body'][] = $temp; + $output['parameters']['all'][] = $temp; } continue 2; @@ -371,6 +372,6 @@ public function getEnumNames(): array } } } - return $list; + return \array_values(\array_unique($list)); } }