Skip to content

Commit ad2dd88

Browse files
committed
[dart-dio] Adds support for multipart form data post body
1 parent adbed05 commit ad2dd88

File tree

1 file changed

+26
-12
lines changed
  • modules/openapi-generator/src/main/resources/dart-dio

1 file changed

+26
-12
lines changed

modules/openapi-generator/src/main/resources/dart-dio/api.mustache

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,38 @@ class {{classname}} {
2525
2626
String path = "{{{path}}}"{{#pathParams}}.replaceAll("{" + "{{baseName}}" + "}", {{{paramName}}}.toString()){{/pathParams}};
2727

28-
// query params
29-
Map<String, dynamic> queryParams = {};
30-
Map<String, String> headerParams = Map.from(headers ?? {});
31-
Map<String, String> formParams = {};
28+
Map<String, dynamic> queryParams = {};
29+
Map<String, String> headerParams = Map.from(headers ?? {});
30+
dynamic bodyData;
3231

3332
{{#headerParams}}
3433
headerParams["{{baseName}}"] = {{paramName}};
3534
{{/headerParams}}
3635
{{#queryParams}}
3736
queryParams["{{baseName}}"] = {{paramName}};
3837
{{/queryParams}}
39-
queryParams.removeWhere((key, value) => value == null);
40-
headerParams.removeWhere((key, value) => value == null);
41-
formParams.removeWhere((key, value) => value == null);
38+
queryParams.removeWhere((key, value) => value == null);
39+
headerParams.removeWhere((key, value) => value == null);
4240

43-
List<String> contentTypes = [{{#consumes}}
44-
"{{{mediaType}}}"{{#hasMore}},{{/hasMore}}{{/consumes}}];
41+
List<String> contentTypes = [{{#consumes}}"{{{mediaType}}}"{{#hasMore}},{{/hasMore}}{{/consumes}}];
42+
43+
44+
{{#formParams}}
45+
Map<String, dynamic> formData = {};
46+
{{#isMultipart}}
47+
{{^isFile}}
48+
if ({{paramName}} != null) {
49+
formData['{{baseName}}'] = parameterToString({{paramName}});
50+
}
51+
{{/isFile}}
52+
{{#isFile}}
53+
if ({{paramName}} != null) {
54+
formData['{{baseName}}'] = MultipartFile.fromBytes({{paramName}}, filename: "{{baseName}}");
55+
}
56+
{{/isFile}}
57+
{{/isMultipart}}
58+
bodyData = FormData.fromMap(formData);
59+
{{/formParams}}
4560

4661
{{#bodyParam}}
4762
{{#isListContainer}}
@@ -52,14 +67,13 @@ class {{classname}} {
5267
var serializedBody = _serializers.serialize({{paramName}});
5368
{{/isListContainer}}
5469
var json{{paramName}} = json.encode(serializedBody);
70+
bodyData = json{{paramName}};
5571
{{/bodyParam}}
5672

5773
return _dio.request(
5874
path,
5975
queryParameters: queryParams,
60-
{{#bodyParam}}
61-
data: json{{paramName}},
62-
{{/bodyParam}}
76+
data: bodyData,
6377
options: Options(
6478
method: '{{httpMethod}}'.toUpperCase(),
6579
headers: headerParams,

0 commit comments

Comments
 (0)