Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions templates/dart/base/requests/api.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{% import 'flutter/base/utils.twig' as utils %}
final Map<String, dynamic> params = {
{{ utils.map_parameter(method.parameters.query) }}
{{ utils.map_parameter(method.parameters.body) }}
};

final Map<String, String> headers = {
{{ utils.map_headers(method.headers) }}
};

final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, headers: headers);

return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | caseUcfirst}}.fromMap(res.data){% else %} res.data{% endif %};
42 changes: 42 additions & 0 deletions templates/dart/base/requests/file.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{% import 'flutter/base/utils.twig' as utils %}
final Map<String, dynamic> params = {
{{ utils.map_parameter(method.parameters.query) }}
{{ utils.map_parameter(method.parameters.body) }}
};

final Map<String, String> headers = {
{{ utils.map_headers(method.headers) }}
};

{% if 'multipart/form-data' in method.consumes %}
dynamic res;
if(identical(0, 0.0)) {
{% for parameter in method.parameters.all %}
{% if parameter.type == 'file' %}
params['{{ parameter.name }}'] = {{ parameter.name }}.file;
{% endif %}
{% endfor %}
res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, headers: headers);
} else {
String idParamName = '';
{% for parameter in method.parameters.all %}
{% if parameter.type == 'file' %}
final paramName = '{{ parameter.name }}';
{% endif %}
{% if parameter.isUploadID %}
idParamName = '{{ parameter.name }}';
{% endif %}
{% endfor %}
res = await chunkedUpload(
client: client,
path: path,
params: params,
paramName: paramName,
idParamName: idParamName,
headers: headers,
onProgress: onProgress,
);
}

return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | caseUcfirst}}.fromMap(res.data){% else %} res.data{% endif %};
{% endif %}
14 changes: 14 additions & 0 deletions templates/dart/base/requests/location.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{% import 'flutter/base/utils.twig' as utils %}
final Map<String, dynamic> params = {
{{ 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 %}
'{{header|caseLower}}': client.config['{{header|caseLower}}'],
{% endfor %}
{% endfor %}
{% endif %}
};

final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, responseType: ResponseType.bytes);
return res.data;
34 changes: 34 additions & 0 deletions templates/dart/base/requests/oauth.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{% import 'flutter/base/utils.twig' as utils %}
final Map<String, dynamic> params = {
{{ 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 %}
'{{header|caseLower}}': client.config['{{header|caseLower}}'],
{% endfor %}
{% endfor %}
{% endif %}
};

final List query = [];

params.forEach((key, value) {
if (value is List) {
for (var item in value) {
query.add(Uri.encodeComponent(key + '[]') + '=' + Uri.encodeComponent(item));
}
} else if(value != null) {
query.add(Uri.encodeComponent(key) + '=' + Uri.encodeComponent(value));
}
});

Uri endpoint = Uri.parse(client.endPoint);
Uri url = Uri(scheme: endpoint.scheme,
host: endpoint.host,
port: endpoint.port,
path: endpoint.path + path,
query: query.join('&')
);

return client.webAuth(url);
11 changes: 11 additions & 0 deletions templates/dart/base/utils.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{% macro map_parameter(parameters) %}
{% for parameter in parameters %}
'{{ parameter.name }}': {{ parameter.name | caseCamel | escapeKeyword }},
{% endfor %}
{% endmacro %}

{% macro map_headers(headers) %}
{% for key, header in headers %}
'{{ key }}': '{{ header }}',
{% endfor %}
{% endmacro %}
68 changes: 6 additions & 62 deletions templates/dart/lib/services/service.dart.twig
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ part of {{ language.params.packageName }};
{% macro method_parameters(parameters, consumes) %}
{% 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 %}
{% endmacro %}
{% macro map_parameter(parameter) %}'{{ parameter.name }}': {{ parameter.name | caseCamel | escapeKeyword }},{% endmacro %}

{%if service.description %}
{{ service.description|dartComment}}
Expand All @@ -19,72 +18,17 @@ class {{ service.name | caseUcfirst }} extends Service {
{{ method.description | dartComment }}
///
{% endif %}
{% 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 {
{% 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 {
final String path = '{{ method.path }}'{% for parameter in method.parameters.path %}.replaceAll('{{ '{' }}{{ parameter.name | caseCamel }}{{ '}' }}', {{ parameter.name | caseCamel | escapeKeyword }}){% endfor %};

final Map<String, dynamic> params = {
{% for parameter in method.parameters.query %}
{{ _self.map_parameter(parameter) }}
{% endfor %}
{% for parameter in method.parameters.body %}
{{ _self.map_parameter(parameter) }}
{% endfor %}
{% if method.type == 'location' %}
{% if method.security|length > 0 %}
{% for node in method.security %}
{% for key,header in node|keys %}
'{{header|caseLower}}': client.config['{{header|caseLower}}'],
{% endfor %}
{% endfor %}
{% endif %}
{% endif %}
};

{% if method.type == 'location' %}
final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, responseType: ResponseType.bytes);
return res.data;
{% else %}
final Map<String, String> headers = {
{% for key, header in method.headers %}
'{{ key }}': '{{ header }}',
{% endfor %}
};


{% if 'multipart/form-data' in method.consumes %}
dynamic res;
if(identical(0, 0.0)) {
{% for parameter in method.parameters.all %}
{% if parameter.type == 'file' %}
params['{{ parameter.name }}'] = {{ parameter.name }}.file;
{% endif %}
{% endfor %}
res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, headers: headers);
} else {
String idParamName = '';
{% for parameter in method.parameters.all %}
{% if parameter.type == 'file' %}
final paramName = '{{ parameter.name }}';
{% endif %}
{% if parameter.isUploadID %}
idParamName = '{{ parameter.name }}';
{% endif %}
{% endfor %}
res = await chunkedUpload(
client: client,
path: path,
params: params,
paramName: paramName,
idParamName: idParamName,
headers: headers,
onProgress: onProgress,
);
}
{{ include('dart/base/requests/file.twig') }}
{% elseif method.type == 'location' %}
{{ include('dart/base/requests/location.twig') }}
{% else %}
final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, headers: headers);
{% endif %}
return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | caseUcfirst | overrideIdentifier}}.fromMap(res.data){% else %} res.data{% endif %};
{{ include('dart/base/requests/api.twig') }}
{% endif %}

}
{% endfor %}
}
13 changes: 13 additions & 0 deletions templates/flutter/base/requests/api.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{% import 'flutter/base/utils.twig' as utils %}
final Map<String, dynamic> params = {
{{ utils.map_parameter(method.parameters.query) }}
{{ utils.map_parameter(method.parameters.body) }}
};

final Map<String, String> headers = {
{{ utils.map_headers(method.headers) }}
};

final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, headers: headers);

return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | caseUcfirst}}.fromMap(res.data){% else %} res.data{% endif %};
42 changes: 42 additions & 0 deletions templates/flutter/base/requests/file.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{% import 'flutter/base/utils.twig' as utils %}
final Map<String, dynamic> params = {
{{ utils.map_parameter(method.parameters.query) }}
{{ utils.map_parameter(method.parameters.body) }}
};

final Map<String, String> headers = {
{{ utils.map_headers(method.headers) }}
};

{% if 'multipart/form-data' in method.consumes %}
dynamic res;
if(kIsWeb) {
{% for parameter in method.parameters.all %}
{% if parameter.type == 'file' %}
params['{{ parameter.name }}'] = {{ parameter.name }}.file;
{% endif %}
{% endfor %}
res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, headers: headers);
} else {
String idParamName = '';
{% for parameter in method.parameters.all %}
{% if parameter.type == 'file' %}
final paramName = '{{ parameter.name }}';
{% endif %}
{% if parameter.isUploadID %}
idParamName = '{{ parameter.name }}';
{% endif %}
{% endfor %}
res = await chunkedUpload(
client: client,
path: path,
params: params,
paramName: paramName,
idParamName: idParamName,
headers: headers,
onProgress: onProgress,
);
}

return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | caseUcfirst}}.fromMap(res.data){% else %} res.data{% endif %};
{% endif %}
14 changes: 14 additions & 0 deletions templates/flutter/base/requests/location.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{% import 'flutter/base/utils.twig' as utils %}
final Map<String, dynamic> params = {
{{ 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 %}
'{{header|caseLower}}': client.config['{{header|caseLower}}'],
{% endfor %}
{% endfor %}
{% endif %}
};

final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, responseType: ResponseType.bytes);
return res.data;
34 changes: 34 additions & 0 deletions templates/flutter/base/requests/oauth.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{% import 'flutter/base/utils.twig' as utils %}
final Map<String, dynamic> params = {
{{ 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 %}
'{{header|caseLower}}': client.config['{{header|caseLower}}'],
{% endfor %}
{% endfor %}
{% endif %}
};

final List query = [];

params.forEach((key, value) {
if (value is List) {
for (var item in value) {
query.add(Uri.encodeComponent(key + '[]') + '=' + Uri.encodeComponent(item));
}
} else if(value != null) {
query.add(Uri.encodeComponent(key) + '=' + Uri.encodeComponent(value));
}
});

Uri endpoint = Uri.parse(client.endPoint);
Uri url = Uri(scheme: endpoint.scheme,
host: endpoint.host,
port: endpoint.port,
path: endpoint.path + path,
query: query.join('&')
);

return client.webAuth(url);
11 changes: 11 additions & 0 deletions templates/flutter/base/utils.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{% macro map_parameter(parameters) %}
{% for parameter in parameters %}
'{{ parameter.name }}': {{ parameter.name | caseCamel | escapeKeyword }},
{% endfor %}
{% endmacro %}

{% macro map_headers(headers) %}
{% for key, header in headers %}
'{{ key }}': '{{ header }}',
{% endfor %}
{% endmacro %}
Loading