[dart-dio] Fix x-www-form-urlencoded body not working (#8175)

* only use `FormData.fromMap()` for multipart content, `FormData` does not work with `x-www-form-urlencoded`
* use a basic map for `x-www-form-urlencoded` content
* fix formatting
This commit is contained in:
Peter Leibiger 2020-12-14 08:36:18 +01:00 committed by GitHub
parent 7f9012c554
commit 351377ca29
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 82 additions and 79 deletions

View File

@ -40,25 +40,28 @@ class {{classname}} {
List<String> contentTypes = [{{#consumes}}"{{{mediaType}}}"{{^-last}},{{/-last}}{{/consumes}}]; List<String> contentTypes = [{{#consumes}}"{{{mediaType}}}"{{^-last}},{{/-last}}{{/consumes}}];
{{#hasFormParams}} {{#hasFormParams}}
Map<String, dynamic> formData = {}; final Map<String, dynamic> formData = {};
{{#formParams}}
{{#isMultipart}} {{#isMultipart}}
{{^isFile}} {{#formParams}}
if ({{paramName}} != null) { {{^isFile}}
formData[r'{{baseName}}'] = parameterToString(_serializers, {{paramName}}); if ({{paramName}} != null) {
}
{{/isFile}}
{{#isFile}}
if ({{paramName}} != null) {
formData[r'{{baseName}}'] = MultipartFile.fromBytes({{paramName}}, filename: r'{{baseName}}');
}
{{/isFile}}
{{/isMultipart}}
{{^isMultipart}}
formData[r'{{baseName}}'] = parameterToString(_serializers, {{paramName}}); formData[r'{{baseName}}'] = parameterToString(_serializers, {{paramName}});
{{/isMultipart}} }
{{/isFile}}
{{#isFile}}
if ({{paramName}} != null) {
formData[r'{{baseName}}'] = MultipartFile.fromBytes({{paramName}}, filename: r'{{baseName}}');
}
{{/isFile}}
{{/formParams}} {{/formParams}}
bodyData = FormData.fromMap(formData); bodyData = FormData.fromMap(formData);
{{/isMultipart}}
{{^isMultipart}}
{{#formParams}}
formData['{{baseName}}'] = parameterToString(_serializers, {{paramName}});
{{/formParams}}
bodyData = formData;
{{/isMultipart}}
{{/hasFormParams}} {{/hasFormParams}}
{{#bodyParam}} {{#bodyParam}}

View File

@ -295,10 +295,10 @@ class PetApi {
List<String> contentTypes = ["application/x-www-form-urlencoded"]; List<String> contentTypes = ["application/x-www-form-urlencoded"];
Map<String, dynamic> formData = {}; final Map<String, dynamic> formData = {};
formData[r'name'] = parameterToString(_serializers, name); formData['name'] = parameterToString(_serializers, name);
formData[r'status'] = parameterToString(_serializers, status); formData['status'] = parameterToString(_serializers, status);
bodyData = FormData.fromMap(formData); bodyData = formData;
return _dio.request( return _dio.request(
@ -334,13 +334,13 @@ class PetApi {
List<String> contentTypes = ["multipart/form-data"]; List<String> contentTypes = ["multipart/form-data"];
Map<String, dynamic> formData = {}; final Map<String, dynamic> formData = {};
if (additionalMetadata != null) { if (additionalMetadata != null) {
formData[r'additionalMetadata'] = parameterToString(_serializers, additionalMetadata); formData[r'additionalMetadata'] = parameterToString(_serializers, additionalMetadata);
} }
if (file != null) { if (file != null) {
formData[r'file'] = MultipartFile.fromBytes(file, filename: r'file'); formData[r'file'] = MultipartFile.fromBytes(file, filename: r'file');
} }
bodyData = FormData.fromMap(formData); bodyData = FormData.fromMap(formData);

View File

@ -323,10 +323,10 @@ class PetApi {
List<String> contentTypes = ["application/x-www-form-urlencoded"]; List<String> contentTypes = ["application/x-www-form-urlencoded"];
Map<String, dynamic> formData = {}; final Map<String, dynamic> formData = {};
formData[r'name'] = parameterToString(_serializers, name); formData['name'] = parameterToString(_serializers, name);
formData[r'status'] = parameterToString(_serializers, status); formData['status'] = parameterToString(_serializers, status);
bodyData = FormData.fromMap(formData); bodyData = formData;
return _dio.request( return _dio.request(
@ -362,13 +362,13 @@ class PetApi {
List<String> contentTypes = ["multipart/form-data"]; List<String> contentTypes = ["multipart/form-data"];
Map<String, dynamic> formData = {}; final Map<String, dynamic> formData = {};
if (additionalMetadata != null) { if (additionalMetadata != null) {
formData[r'additionalMetadata'] = parameterToString(_serializers, additionalMetadata); formData[r'additionalMetadata'] = parameterToString(_serializers, additionalMetadata);
} }
if (file != null) { if (file != null) {
formData[r'file'] = MultipartFile.fromBytes(file, filename: r'file'); formData[r'file'] = MultipartFile.fromBytes(file, filename: r'file');
} }
bodyData = FormData.fromMap(formData); bodyData = FormData.fromMap(formData);

View File

@ -459,22 +459,22 @@ class FakeApi {
List<String> contentTypes = ["application/x-www-form-urlencoded"]; List<String> contentTypes = ["application/x-www-form-urlencoded"];
Map<String, dynamic> formData = {}; final Map<String, dynamic> formData = {};
formData[r'integer'] = parameterToString(_serializers, integer); formData['integer'] = parameterToString(_serializers, integer);
formData[r'int32'] = parameterToString(_serializers, int32); formData['int32'] = parameterToString(_serializers, int32);
formData[r'int64'] = parameterToString(_serializers, int64); formData['int64'] = parameterToString(_serializers, int64);
formData[r'number'] = parameterToString(_serializers, number); formData['number'] = parameterToString(_serializers, number);
formData[r'float'] = parameterToString(_serializers, float); formData['float'] = parameterToString(_serializers, float);
formData[r'double'] = parameterToString(_serializers, double_); formData['double'] = parameterToString(_serializers, double_);
formData[r'string'] = parameterToString(_serializers, string); formData['string'] = parameterToString(_serializers, string);
formData[r'pattern_without_delimiter'] = parameterToString(_serializers, patternWithoutDelimiter); formData['pattern_without_delimiter'] = parameterToString(_serializers, patternWithoutDelimiter);
formData[r'byte'] = parameterToString(_serializers, byte); formData['byte'] = parameterToString(_serializers, byte);
formData[r'binary'] = parameterToString(_serializers, binary); formData['binary'] = parameterToString(_serializers, binary);
formData[r'date'] = parameterToString(_serializers, date); formData['date'] = parameterToString(_serializers, date);
formData[r'dateTime'] = parameterToString(_serializers, dateTime); formData['dateTime'] = parameterToString(_serializers, dateTime);
formData[r'password'] = parameterToString(_serializers, password); formData['password'] = parameterToString(_serializers, password);
formData[r'callback'] = parameterToString(_serializers, callback); formData['callback'] = parameterToString(_serializers, callback);
bodyData = FormData.fromMap(formData); bodyData = formData;
return _dio.request( return _dio.request(
@ -516,10 +516,10 @@ class FakeApi {
List<String> contentTypes = ["application/x-www-form-urlencoded"]; List<String> contentTypes = ["application/x-www-form-urlencoded"];
Map<String, dynamic> formData = {}; final Map<String, dynamic> formData = {};
formData[r'enum_form_string_array'] = parameterToString(_serializers, enumFormStringArray); formData['enum_form_string_array'] = parameterToString(_serializers, enumFormStringArray);
formData[r'enum_form_string'] = parameterToString(_serializers, enumFormString); formData['enum_form_string'] = parameterToString(_serializers, enumFormString);
bodyData = FormData.fromMap(formData); bodyData = formData;
return _dio.request( return _dio.request(
@ -634,10 +634,10 @@ class FakeApi {
List<String> contentTypes = ["application/x-www-form-urlencoded"]; List<String> contentTypes = ["application/x-www-form-urlencoded"];
Map<String, dynamic> formData = {}; final Map<String, dynamic> formData = {};
formData[r'param'] = parameterToString(_serializers, param); formData['param'] = parameterToString(_serializers, param);
formData[r'param2'] = parameterToString(_serializers, param2); formData['param2'] = parameterToString(_serializers, param2);
bodyData = FormData.fromMap(formData); bodyData = formData;
return _dio.request( return _dio.request(

View File

@ -295,10 +295,10 @@ class PetApi {
List<String> contentTypes = ["application/x-www-form-urlencoded"]; List<String> contentTypes = ["application/x-www-form-urlencoded"];
Map<String, dynamic> formData = {}; final Map<String, dynamic> formData = {};
formData[r'name'] = parameterToString(_serializers, name); formData['name'] = parameterToString(_serializers, name);
formData[r'status'] = parameterToString(_serializers, status); formData['status'] = parameterToString(_serializers, status);
bodyData = FormData.fromMap(formData); bodyData = formData;
return _dio.request( return _dio.request(
@ -334,13 +334,13 @@ class PetApi {
List<String> contentTypes = ["multipart/form-data"]; List<String> contentTypes = ["multipart/form-data"];
Map<String, dynamic> formData = {}; final Map<String, dynamic> formData = {};
if (additionalMetadata != null) { if (additionalMetadata != null) {
formData[r'additionalMetadata'] = parameterToString(_serializers, additionalMetadata); formData[r'additionalMetadata'] = parameterToString(_serializers, additionalMetadata);
} }
if (file != null) { if (file != null) {
formData[r'file'] = MultipartFile.fromBytes(file, filename: r'file'); formData[r'file'] = MultipartFile.fromBytes(file, filename: r'file');
} }
bodyData = FormData.fromMap(formData); bodyData = FormData.fromMap(formData);
@ -391,13 +391,13 @@ class PetApi {
List<String> contentTypes = ["multipart/form-data"]; List<String> contentTypes = ["multipart/form-data"];
Map<String, dynamic> formData = {}; final Map<String, dynamic> formData = {};
if (additionalMetadata != null) { if (additionalMetadata != null) {
formData[r'additionalMetadata'] = parameterToString(_serializers, additionalMetadata); formData[r'additionalMetadata'] = parameterToString(_serializers, additionalMetadata);
} }
if (requiredFile != null) { if (requiredFile != null) {
formData[r'requiredFile'] = MultipartFile.fromBytes(requiredFile, filename: r'requiredFile'); formData[r'requiredFile'] = MultipartFile.fromBytes(requiredFile, filename: r'requiredFile');
} }
bodyData = FormData.fromMap(formData); bodyData = FormData.fromMap(formData);