Skip to content

Commit 5763521

Browse files
committed
refactor dart templates
1 parent 1648b3c commit 5763521

File tree

6 files changed

+120
-62
lines changed

6 files changed

+120
-62
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{% import 'flutter/base/utils.twig' as utils %}
2+
final Map<String, dynamic> params = {
3+
{{ utils.map_parameter(method.parameters.query) }}
4+
{{ utils.map_parameter(method.parameters.body) }}
5+
};
6+
7+
final Map<String, String> headers = {
8+
{{ utils.map_headers(method.headers) }}
9+
};
10+
11+
final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, headers: headers);
12+
13+
return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | caseUcfirst}}.fromMap(res.data){% else %} res.data{% endif %};
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{% import 'flutter/base/utils.twig' as utils %}
2+
final Map<String, dynamic> params = {
3+
{{ utils.map_parameter(method.parameters.query) }}
4+
{{ utils.map_parameter(method.parameters.body) }}
5+
};
6+
7+
final Map<String, String> headers = {
8+
{{ utils.map_headers(method.headers) }}
9+
};
10+
11+
{% if 'multipart/form-data' in method.consumes %}
12+
dynamic res;
13+
if(identical(0, 0.0)) {
14+
{% for parameter in method.parameters.all %}
15+
{% if parameter.type == 'file' %}
16+
params['{{ parameter.name }}'] = {{ parameter.name }}.file;
17+
{% endif %}
18+
{% endfor %}
19+
res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, headers: headers);
20+
} else {
21+
String idParamName = '';
22+
{% for parameter in method.parameters.all %}
23+
{% if parameter.type == 'file' %}
24+
final paramName = '{{ parameter.name }}';
25+
{% endif %}
26+
{% if parameter.isUploadID %}
27+
idParamName = '{{ parameter.name }}';
28+
{% endif %}
29+
{% endfor %}
30+
res = await chunkedUpload(
31+
client: client,
32+
path: path,
33+
params: params,
34+
paramName: paramName,
35+
idParamName: idParamName,
36+
headers: headers,
37+
onProgress: onProgress,
38+
);
39+
}
40+
41+
return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | caseUcfirst}}.fromMap(res.data){% else %} res.data{% endif %};
42+
{% endif %}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{% import 'flutter/base/utils.twig' as utils %}
2+
final Map<String, dynamic> params = {
3+
{{ utils.map_parameter(method.parameters.query) }}
4+
{{ utils.map_parameter(method.parameters.body) }}
5+
{% if method.security|length > 0 %}{% for node in method.security %}
6+
{% for key,header in node|keys %}
7+
'{{header|caseLower}}': client.config['{{header|caseLower}}'],
8+
{% endfor %}
9+
{% endfor %}
10+
{% endif %}
11+
};
12+
13+
final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, responseType: ResponseType.bytes);
14+
return res.data;
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{% import 'flutter/base/utils.twig' as utils %}
2+
final Map<String, dynamic> params = {
3+
{{ utils.map_parameter(method.parameters.query) }}
4+
{{ utils.map_parameter(method.parameters.body) }}
5+
{% if method.security|length > 0 %}
6+
{% for node in method.security %}
7+
{% for key,header in node|keys %}
8+
'{{header|caseLower}}': client.config['{{header|caseLower}}'],
9+
{% endfor %}
10+
{% endfor %}
11+
{% endif %}
12+
};
13+
14+
final List query = [];
15+
16+
params.forEach((key, value) {
17+
if (value is List) {
18+
for (var item in value) {
19+
query.add(Uri.encodeComponent(key + '[]') + '=' + Uri.encodeComponent(item));
20+
}
21+
} else if(value != null) {
22+
query.add(Uri.encodeComponent(key) + '=' + Uri.encodeComponent(value));
23+
}
24+
});
25+
26+
Uri endpoint = Uri.parse(client.endPoint);
27+
Uri url = Uri(scheme: endpoint.scheme,
28+
host: endpoint.host,
29+
port: endpoint.port,
30+
path: endpoint.path + path,
31+
query: query.join('&')
32+
);
33+
34+
return client.webAuth(url);

templates/dart/base/utils.twig

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{% macro map_parameter(parameters) %}
2+
{% for parameter in parameters %}
3+
'{{ parameter.name }}': {{ parameter.name | caseCamel | escapeKeyword }},
4+
{% endfor %}
5+
{% endmacro %}
6+
7+
{% macro map_headers(headers) %}
8+
{% for key, header in headers %}
9+
'{{ key }}': '{{ header }}',
10+
{% endfor %}
11+
{% endmacro %}

templates/dart/lib/services/service.dart.twig

Lines changed: 6 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ part of {{ language.params.packageName }};
44
{% macro method_parameters(parameters, consumes) %}
55
{% if parameters.all|length > 0 %}{{ '{' }}{% for parameter in parameters.all %}{{ _self.parameter(parameter) }}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in consumes %}, Function(UploadProgress)? onProgress{% endif %}{{ '}' }}{% endif %}
66
{% endmacro %}
7-
{% macro map_parameter(parameter) %}'{{ parameter.name }}': {{ parameter.name | caseCamel | escapeKeyword }},{% endmacro %}
87

98
{%if service.description %}
109
{{ service.description|dartComment}}
@@ -19,72 +18,17 @@ class {{ service.name | caseUcfirst }} extends Service {
1918
{{ method.description | dartComment }}
2019
///
2120
{% endif %}
22-
{% if method.type == 'webAuth' %}Future{% elseif method.type == 'location' %} Future<Uint8List> {% else %} {% if method.responseModel and method.responseModel != 'any' %}Future<models.{{method.responseModel | caseUcfirst | overrideIdentifier}}>{% else %}Future{% endif %}{% endif %} {{ method.name | caseCamel }}({{ _self.method_parameters(method.parameters, method.consumes) }}) async {
21+
{% if method.type == 'location' %} Future<Uint8List> {% else %} {% if method.responseModel and method.responseModel != 'any' %}Future<models.{{method.responseModel | caseUcfirst | overrideIdentifier}}>{% else %}Future{% endif %}{% endif %} {{ method.name | caseCamel }}({{ _self.method_parameters(method.parameters, method.consumes) }}) async {
2322
final String path = '{{ method.path }}'{% for parameter in method.parameters.path %}.replaceAll('{{ '{' }}{{ parameter.name | caseCamel }}{{ '}' }}', {{ parameter.name | caseCamel | escapeKeyword }}){% endfor %};
2423

25-
final Map<String, dynamic> params = {
26-
{% for parameter in method.parameters.query %}
27-
{{ _self.map_parameter(parameter) }}
28-
{% endfor %}
29-
{% for parameter in method.parameters.body %}
30-
{{ _self.map_parameter(parameter) }}
31-
{% endfor %}
32-
{% if method.type == 'location' %}
33-
{% if method.security|length > 0 %}
34-
{% for node in method.security %}
35-
{% for key,header in node|keys %}
36-
'{{header|caseLower}}': client.config['{{header|caseLower}}'],
37-
{% endfor %}
38-
{% endfor %}
39-
{% endif %}
40-
{% endif %}
41-
};
42-
43-
{% if method.type == 'location' %}
44-
final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, responseType: ResponseType.bytes);
45-
return res.data;
46-
{% else %}
47-
final Map<String, String> headers = {
48-
{% for key, header in method.headers %}
49-
'{{ key }}': '{{ header }}',
50-
{% endfor %}
51-
};
52-
53-
5424
{% if 'multipart/form-data' in method.consumes %}
55-
dynamic res;
56-
if(identical(0, 0.0)) {
57-
{% for parameter in method.parameters.all %}
58-
{% if parameter.type == 'file' %}
59-
params['{{ parameter.name }}'] = {{ parameter.name }}.file;
60-
{% endif %}
61-
{% endfor %}
62-
res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, headers: headers);
63-
} else {
64-
String idParamName = '';
65-
{% for parameter in method.parameters.all %}
66-
{% if parameter.type == 'file' %}
67-
final paramName = '{{ parameter.name }}';
68-
{% endif %}
69-
{% if parameter.isUploadID %}
70-
idParamName = '{{ parameter.name }}';
71-
{% endif %}
72-
{% endfor %}
73-
res = await chunkedUpload(
74-
client: client,
75-
path: path,
76-
params: params,
77-
paramName: paramName,
78-
idParamName: idParamName,
79-
headers: headers,
80-
onProgress: onProgress,
81-
);
82-
}
25+
{{ include('dart/base/requests/file.twig') }}
26+
{% elseif method.type == 'location' %}
27+
{{ include('dart/base/requests/location.twig') }}
8328
{% else %}
84-
final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, headers: headers);
85-
{% endif %}
86-
return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | caseUcfirst | overrideIdentifier}}.fromMap(res.data){% else %} res.data{% endif %};
29+
{{ include('dart/base/requests/api.twig') }}
8730
{% endif %}
31+
8832
}
8933
{% endfor %}
9034
}

0 commit comments

Comments
 (0)