diff --git a/src/SDK/Language/Dart.php b/src/SDK/Language/Dart.php index f83474de0..6a45c0a5f 100644 --- a/src/SDK/Language/Dart.php +++ b/src/SDK/Language/Dart.php @@ -430,7 +430,7 @@ public function getFilters(): array new TwigFilter('dartComment', function ($value) { $value = explode("\n", $value); foreach ($value as $key => $line) { - $value[$key] = " /// " . wordwrap($value[$key], 75, "\n /// "); + $value[$key] = " /// " . wordwrap($value[$key], 75, "\n /// "); } return implode("\n", $value); }, ['is_safe' => ['html']]), diff --git a/templates/flutter/base/requests/api.twig b/templates/flutter/base/requests/api.twig index 44229d720..233b53490 100644 --- a/templates/flutter/base/requests/api.twig +++ b/templates/flutter/base/requests/api.twig @@ -1,11 +1,11 @@ {% import 'flutter/base/utils.twig' as utils %} final Map params = { - {{ utils.map_parameter(method.parameters.query) }} - {{ utils.map_parameter(method.parameters.body) }} + {{- utils.map_parameter(method.parameters.query) -}} + {{~ utils.map_parameter(method.parameters.body) }} }; final Map headers = { - {{ utils.map_headers(method.headers) }} + {{~ utils.map_headers(method.headers) }} }; final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, headers: headers); diff --git a/templates/flutter/base/requests/file.twig b/templates/flutter/base/requests/file.twig index bc41436c0..7a5777115 100644 --- a/templates/flutter/base/requests/file.twig +++ b/templates/flutter/base/requests/file.twig @@ -1,11 +1,11 @@ - {% import 'flutter/base/utils.twig' as utils %} +{% import 'flutter/base/utils.twig' as utils %} final Map params = { - {{ utils.map_parameter(method.parameters.query) }} - {{ utils.map_parameter(method.parameters.body) }} + {{~ utils.map_parameter(method.parameters.query) }} + {{~ utils.map_parameter(method.parameters.body) }} }; final Map headers = { - {{ utils.map_headers(method.headers) }} + {{~ utils.map_headers(method.headers) }} }; {% if 'multipart/form-data' in method.consumes %} diff --git a/templates/flutter/base/requests/location.twig b/templates/flutter/base/requests/location.twig index 47731d778..07537edbc 100644 --- a/templates/flutter/base/requests/location.twig +++ b/templates/flutter/base/requests/location.twig @@ -1,6 +1,6 @@ {% import 'flutter/base/utils.twig' as utils %} final Map params = { - {{ utils.map_parameter(method.parameters.query) }} + {{- utils.map_parameter(method.parameters.query) -}} {{ utils.map_parameter(method.parameters.body) }} {% if method.security|length > 0 %}{% for node in method.security %} {% for key,header in node|keys %} @@ -9,6 +9,19 @@ {% endfor %} {% endif %} }; + final uri = Uri.parse(client.endpoint + path).replace(queryParameters: params); - final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, responseType: ResponseType.bytes); + return uri; + } + + Future {{ method.name | caseCamel }}Bytes({{ utils.method_parameters(method.parameters.all | filter((param) => not param.isGlobal), method.consumes) }}) async { + final uri = {{ method.name | caseCamel }}( + {%- for parameter in method.parameters.all | filter((param) => not param.isGlobal) ~%} + {{ parameter.name | caseCamel | overrideIdentifier }}: {{ parameter.name | caseCamel | overrideIdentifier }}, + {%- endfor ~%} + ); + + final path = "/" + uri.pathSegments.sublist(1).join("/"); + + final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: uri.queryParameters, responseType: ResponseType.bytes); return res.data; \ No newline at end of file diff --git a/templates/flutter/base/utils.twig b/templates/flutter/base/utils.twig index cfd3c8e72..c1730e87a 100644 --- a/templates/flutter/base/utils.twig +++ b/templates/flutter/base/utils.twig @@ -1,11 +1,17 @@ -{% macro map_parameter(parameters) %} -{% for parameter in parameters %} -'{{ parameter.name }}': {{ parameter.name | caseCamel | overrideIdentifier }}, -{% endfor %} -{% endmacro %} +{%- macro map_parameter(parameters) -%} +{%- for parameter in parameters ~%} + '{{ parameter.name }}': {{ parameter.name | caseCamel | overrideIdentifier }}, +{%- endfor ~%} +{%- endmacro ~%} -{% macro map_headers(headers) %} -{% for key, header in headers %} +{% macro map_headers(headers) -%} +{%- for key, header in headers %} '{{ key }}': '{{ header }}', -{% endfor %} +{%- endfor -%} +{%- endmacro -%} + +{% macro parameter(parameter) %}{% if parameter.required %}required {{ parameter.type | typeName }}{% else %}{{ parameter.type | typeName }}?{% 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 %} \ No newline at end of file diff --git a/templates/flutter/lib/services/service.dart.twig b/templates/flutter/lib/services/service.dart.twig index 2da2fe316..de51db88f 100644 --- a/templates/flutter/lib/services/service.dart.twig +++ b/templates/flutter/lib/services/service.dart.twig @@ -1,14 +1,11 @@ part of {{ language.params.packageName }}; -{% macro parameter(parameter) %}{% if parameter.required %}required {{ parameter.type | typeName }}{% else %}{{ parameter.type | typeName }}?{% 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 %} +{% import 'flutter/base/utils.twig' as utils %} {% macro service_params(parameters) %} {% if parameters|length > 0 %}{{ ', {' }}{% for parameter in parameters %}{% if parameter.required %}required {% endif %}this.{{ parameter.name | caseCamel | overrideIdentifier }}{% if not loop.last %}, {% endif %}{% endfor %}{{ '}' }}{% endif %} {% endmacro %} {%if service.description %} -{{ service.description|dartComment}} +{{- service.description|dartComment}} {% endif %} class {{ service.name | caseUcfirst }} extends Service { {{ service.name | caseUcfirst }}(Client client{{ _self.service_params(service.globalParams) }}): super(client); @@ -19,13 +16,13 @@ class {{ service.name | caseUcfirst }} extends Service { {% endif %} {% for method in service.methods %} - /// {{ method.title }} -{% if method.description %} - /// + /// {{ method.title }} +{%~ if method.description %} + /// {{ method.description|dartComment }} - /// + /// {% endif %} - {% if method.type == 'webAuth' %}Future{% elseif method.type == 'location' %} Future {% else %} {% if method.responseModel and method.responseModel != 'any' %}Future{% else %}Future{% endif %}{% endif %} {{ method.name | caseCamel }}({{ _self.method_parameters(method.parameters.all | filter((param) => not param.isGlobal), method.consumes) }}) async { + {% if method.type == 'webAuth' %}Future{% elseif method.type == 'location' %}Uri{% else %}{% if method.responseModel and method.responseModel != 'any' %}Future{% else %}Future{% endif %}{% endif %} {{ method.name | caseCamel }}({{ utils.method_parameters(method.parameters.all | filter((param) => not param.isGlobal), method.consumes) }}){% if method.type != 'location' %} async{% endif %} { {% if method.parameters.path | length > 0 %}final{% else %}const{% endif %} String path = '{{ method.path }}'{% for parameter in method.parameters.path %}.replaceAll('{{ '{' }}{{ parameter.name | caseCamel }}{{ '}' }}', {{ parameter.name | caseCamel | overrideIdentifier }}){% endfor %}; {% if 'multipart/form-data' in method.consumes %} @@ -37,7 +34,6 @@ class {{ service.name | caseUcfirst }} extends Service { {% else %} {{ include('flutter/base/requests/api.twig') }} {% endif %} - } {% endfor %} } \ No newline at end of file