diff --git a/src/SDK/Language/Dart.php b/src/SDK/Language/Dart.php index 5f78f3a7c..f822261fd 100644 --- a/src/SDK/Language/Dart.php +++ b/src/SDK/Language/Dart.php @@ -3,6 +3,7 @@ namespace Appwrite\SDK\Language; use Appwrite\SDK\Language; +use Twig\TwigFilter; class Dart extends Language { @@ -434,4 +435,17 @@ public function getFiles() ], ]; } + + public function getFilters(): array + { + return [ + new TwigFilter('dartComment', function ($value) { + $value = explode("\n", $value); + foreach ($value as $key => $line) { + $value[$key] = " /// " . wordwrap($value[$key], 75, "\n /// "); + } + return implode("\n", $value); + }, ['is_safe' => ['html']]), + ]; + } } diff --git a/src/SDK/Language/DotNet.php b/src/SDK/Language/DotNet.php index 609e02563..374e9f373 100644 --- a/src/SDK/Language/DotNet.php +++ b/src/SDK/Language/DotNet.php @@ -3,6 +3,7 @@ namespace Appwrite\SDK\Language; use Appwrite\SDK\Language; +use Twig\TwigFilter; class DotNet extends Language { @@ -376,5 +377,18 @@ public function getFiles() ] ]; } + + public function getFilters(): array + { + return [ + new TwigFilter('dotnetComment', function ($value) { + $value = explode("\n", $value); + foreach ($value as $key => $line) { + $value[$key] = " /// " . wordwrap($value[$key], 75, "\n /// "); + } + return implode("\n", $value); + }, ['is_safe' => ['html']]) + ]; + } } diff --git a/src/SDK/Language/Go.php b/src/SDK/Language/Go.php index 97c023c22..d480a3122 100644 --- a/src/SDK/Language/Go.php +++ b/src/SDK/Language/Go.php @@ -3,6 +3,7 @@ namespace Appwrite\SDK\Language; use Appwrite\SDK\Language; +use Twig\TwigFilter; class Go extends Language { @@ -246,4 +247,17 @@ public function getParamExample(array $param) return $output; } + + public function getFilters(): array + { + return [ + new TwigFilter('godocComment', function ($value) { + $value = explode("\n", $value); + foreach ($value as $key => $line) { + $value[$key] = "// " . wordwrap($value[$key], 75, "\n// "); + } + return implode("\n", $value); + }, ['is_safe' => ['html']]) + ]; + } } diff --git a/src/SDK/Language/PHP.php b/src/SDK/Language/PHP.php index a5d789d23..2f46390b5 100644 --- a/src/SDK/Language/PHP.php +++ b/src/SDK/Language/PHP.php @@ -3,6 +3,7 @@ namespace Appwrite\SDK\Language; use Appwrite\SDK\Language; +use Twig\TwigFilter; class PHP extends Language { @@ -356,4 +357,21 @@ protected function jsonToAssoc(array $data):string return $output; } + + protected function getReturn(array $method): string + { + if(($method['emptyResponse'] ?? true) || $method['type'] === 'location') { + return 'string'; + } + + return 'array'; + } + + public function getFilters(): array { + return [ + new TwigFilter('getReturn', function($value) { + return $this->getReturn($value); + }) + ]; + } } diff --git a/src/SDK/Language/Ruby.php b/src/SDK/Language/Ruby.php index c8b5eea41..9d13aa684 100644 --- a/src/SDK/Language/Ruby.php +++ b/src/SDK/Language/Ruby.php @@ -3,6 +3,7 @@ namespace Appwrite\SDK\Language; use Appwrite\SDK\Language; +use Twig\TwigFilter; class Ruby extends Language { @@ -327,4 +328,17 @@ protected function jsonToHash(array $data):string return $output; } + + public function getFilters(): array + { + return [ + new TwigFilter('rubyComment', function ($value) { + $value = explode("\n", $value); + foreach ($value as $key => $line) { + $value[$key] = " # " . wordwrap($line, 75, "\n # "); + } + return implode("\n", $value); + }, ['is_safe' => ['html']]) + ]; + } } diff --git a/src/SDK/Language/Swift.php b/src/SDK/Language/Swift.php index 089bccae2..cc2b0aa31 100644 --- a/src/SDK/Language/Swift.php +++ b/src/SDK/Language/Swift.php @@ -3,6 +3,7 @@ namespace Appwrite\SDK\Language; use Appwrite\SDK\Language; +use Twig\TwigFilter; class Swift extends Language { @@ -432,4 +433,17 @@ public function getParamExample(array $param) return $output; } + + public function getFilters(): array + { + return [ + new TwigFilter('swiftComment', function ($value) { + $value = explode("\n", $value); + foreach ($value as $key => $line) { + $value[$key] = " /// " . wordwrap($value[$key], 75, "\n /// "); + } + return implode("\n", $value); + }, ['is_safe' => ['html']]) + ]; + } } diff --git a/src/SDK/Language/Web.php b/src/SDK/Language/Web.php index 694ea26e9..448414778 100644 --- a/src/SDK/Language/Web.php +++ b/src/SDK/Language/Web.php @@ -4,6 +4,7 @@ use Twig\TwigFilter; + class Web extends JS { @@ -337,6 +338,20 @@ public function getFilters(): array new TwigFilter('getReturn', function (array $method, array $spec) { return $this->getReturn($method, $spec); }), + new TwigFilter('comment2', function ($value) { + $value = explode("\n", $value); + foreach ($value as $key => $line) { + $value[$key] = " * " . wordwrap($value[$key], 75, "\n * "); + } + return implode("\n", $value); + }, ['is_safe' => ['html']]), + new TwigFilter('comment3', function ($value) { + $value = explode("\n", $value); + foreach ($value as $key => $line) { + $value[$key] = " * " . wordwrap($value[$key], 75, "\n * "); + } + return implode("\n", $value); + }, ['is_safe' => ['html']]), ]; } } diff --git a/src/SDK/SDK.php b/src/SDK/SDK.php index d09b8d882..4eae44775 100644 --- a/src/SDK/SDK.php +++ b/src/SDK/SDK.php @@ -141,48 +141,6 @@ public function __construct(Language $language, Spec $spec) } return implode("\n", $value); }, ['is_safe' => ['html']])); - $this->twig->addFilter(new TwigFilter('comment2', function ($value) { - $value = explode("\n", $value); - foreach ($value as $key => $line) { - $value[$key] = " * " . wordwrap($value[$key], 75, "\n * "); - } - return implode("\n", $value); - }, ['is_safe' => ['html']])); - $this->twig->addFilter(new TwigFilter('comment3', function ($value) { - $value = explode("\n", $value); - foreach ($value as $key => $line) { - $value[$key] = " * " . wordwrap($value[$key], 75, "\n * "); - } - return implode("\n", $value); - }, ['is_safe' => ['html']])); - $this->twig->addFilter(new TwigFilter('dartComment', function ($value) { - $value = explode("\n", $value); - foreach ($value as $key => $line) { - $value[$key] = " /// " . wordwrap($value[$key], 75, "\n /// "); - } - return implode("\n", $value); - }, ['is_safe' => ['html']])); - $this->twig->addFilter(new TwigFilter('dotnetComment', function ($value) { - $value = explode("\n", $value); - foreach ($value as $key => $line) { - $value[$key] = " /// " . wordwrap($value[$key], 75, "\n /// "); - } - return implode("\n", $value); - }, ['is_safe' => ['html']])); - $this->twig->addFilter(new TwigFilter('swiftComment', function ($value) { - $value = explode("\n", $value); - foreach ($value as $key => $line) { - $value[$key] = " /// " . wordwrap($value[$key], 75, "\n /// "); - } - return implode("\n", $value); - }, ['is_safe' => ['html']])); - $this->twig->addFilter(new TwigFilter('rubyComment', function ($value) { - $value = explode("\n", $value); - foreach ($value as $key => $line) { - $value[$key] = " # " . wordwrap($line, 75, "\n # "); - } - return implode("\n", $value); - }, ['is_safe' => ['html']])); $this->twig->addFilter(new TwigFilter('escapeDollarSign', function ($value) { return str_replace('$', '\$', $value); }, ['is_safe'=>['html']])); @@ -199,13 +157,6 @@ public function __construct(Language $language, Spec $spec) $this->twig->addFilter(new TwigFilter('html', function ($value) { return $value; }, ['is_safe' => ['html']])); - $this->twig->addFilter(new TwigFilter('godocComment', function ($value) { - $value = explode("\n", $value); - foreach ($value as $key => $line) { - $value[$key] = "// " . wordwrap($value[$key], 75, "\n// "); - } - return implode("\n", $value); - }, ['is_safe' => ['html']])); $this->twig->addFilter(new TwigFilter('escapeKeyword', function ($value) use ($language) { if(in_array($value, $language->getKeywords())) { return 'x' . $value; @@ -213,14 +164,6 @@ public function __construct(Language $language, Spec $spec) return $value; }, ['is_safe' => ['html']])); - $this->twig->addFilter(new TwigFilter('ucFirstAndEscape', function ($value) use ($language) { - $value = ucfirst((string)$this->helperCamelCase($value)); - if(in_array($value, $language->getKeywords())) { - $value = 'x' . $value; - } - - return ucfirst((string)$this->helperCamelCase($value)); - }, ['is_safe' => ['html']])); $this->twig->addFilter(new TwigFilter('caseHTML', function ($value) { return $value; }, ['is_safe' => ['html']])); diff --git a/src/Spec/Swagger2.php b/src/Spec/Swagger2.php index 542fa4e17..9450d65c1 100644 --- a/src/Spec/Swagger2.php +++ b/src/Spec/Swagger2.php @@ -149,7 +149,11 @@ public function getMethods($service) $responses = $method['responses']; $responseModel = ''; + $emptyResponse = true; foreach($responses as $code => $desc) { + if($code != '204') { + $emptyResponse = false; + } if(isset($desc['schema']) && isset($desc['schema']['$ref'])) { $responseModel = $desc['schema']['$ref']; if(!empty($responseModel)) { @@ -178,6 +182,7 @@ public function getMethods($service) 'query' => [], 'body' => [], ], + 'emptyResponse' => $emptyResponse, 'responseModel' => $responseModel, ]; diff --git a/templates/php/src/Services/Service.php.twig b/templates/php/src/Services/Service.php.twig index 7e4d6ee02..e75d8e45f 100644 --- a/templates/php/src/Services/Service.php.twig +++ b/templates/php/src/Services/Service.php.twig @@ -20,10 +20,10 @@ class {{ service.name | caseUcfirst }} extends Service * @param {{ parameter.type | typeName }}${{ parameter.name | caseCamel | escapeKeyword }} {% endfor %} * @throws {{spec.title | caseUcfirst}}Exception - * @return {% if (method.type == 'location') %}string{% else %}array{% endif %} + * @return {{ method | getReturn }} */ - public function {{ method.name | caseCamel }}({% for parameter in method.parameters.all %}{{ parameter.type | typeName }}${{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required %} = null{% endif %}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, callable $onProgress = null{% endif %}): {% if (method.type == 'location') %}string{% else %}array{% endif %} + public function {{ method.name | caseCamel }}({% for parameter in method.parameters.all %}{{ parameter.type | typeName }}${{ parameter.name | caseCamel | escapeKeyword }}{% if not parameter.required %} = null{% endif %}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, callable $onProgress = null{% endif %}): {{ method | getReturn }} { {% for parameter in method.parameters.all %}