From af4f072bd0bb58899fd341c1e9627e89c88c141e Mon Sep 17 00:00:00 2001 From: Aditya Mayukh Som Date: Sun, 24 Mar 2024 18:55:31 +0530 Subject: [PATCH] support for multipart request body --- lib/codegen/java/async_http_client.dart | 35 ++++++++++++++++++++----- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/lib/codegen/java/async_http_client.dart b/lib/codegen/java/async_http_client.dart index 54314feb..9542b180 100644 --- a/lib/codegen/java/async_http_client.dart +++ b/lib/codegen/java/async_http_client.dart @@ -230,18 +230,39 @@ public class Main { if (requestModel.hasFormData && requestModel.formDataMapList.isNotEmpty && kMethodsWithBody.contains(method)) { - // including form data into the request var formDataList = requestModel.formDataMapList; - var templateRequestFormData = jj.Template(kTemplateRequestFormData); - for (var formDataMap in formDataList) { - result += templateRequestFormData.render( - {"name": formDataMap['name'], "value": formDataMap['value']}); + + int textCount = 0; + for (var formData in formDataList) { + if (formData["type"] == "text") { + textCount++; + } + } + + if (textCount > 0) { + var templateRequestFormData = jj.Template( + (requestModel.hasFileInFormData) + ? kTemplateMultipartTextFormData + : kTemplateSimpleTextFormData); + + result += templateRequestFormData.render({ + "params": formDataList, // + }); + } + + if (requestModel.hasFileInFormData) { + var templateFileHandling = + jj.Template(kTemplateMultipartFileHandling); + result += templateFileHandling.render({ + "fields": formDataList, + }); } - hasBody = true; } var templateRequestBodySetup = jj.Template(kTemplateRequestBodySetup); - if (kMethodsWithBody.contains(method) && hasBody) { + if (kMethodsWithBody.contains(method) && + hasBody && + !requestModel.hasFormData) { result += templateRequestBodySetup.render(); }