Skip to content

Commit e23576b

Browse files
authored
Merge pull request #693 from badnikhil/resolve-issue-692
fixed swift Code (Tested)
2 parents 2e875ac + d0383b6 commit e23576b

File tree

2 files changed

+805
-523
lines changed

2 files changed

+805
-523
lines changed

lib/codegen/swift/urlsession.dart

Lines changed: 44 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,16 @@ let multipartFormData = try! MultipartFormData(boundary: boundary) {
3737
''';
3838

3939
final String kTemplateJsonData = '''
40-
let parameters = "{{jsonData}}"
41-
let postData = parameters.data(using: .utf8)
40+
let postData = """
41+
{{jsonData}}
42+
""".data(using: .utf8)
4243
4344
''';
4445

4546
final String kTemplateTextData = '''
46-
let parameters = "{{textData}}"
47-
let postData = parameters.data(using: .utf8)
47+
let postData = """
48+
{{textData}}
49+
""".data(using: .utf8)
4850
4951
''';
5052

@@ -61,46 +63,55 @@ request.addValue("{{value}}", forHTTPHeaderField: "{{header}}")
6163
6264
""";
6365

64-
final String kTemplateBody = """
66+
final String kTemplateFormDataBody = """
6567
request.httpBody = try! multipartFormData.encode()
68+
""";
69+
70+
final String kTemplateJsonTextBody = """
71+
request.httpBody = postData
6672
6773
""";
6874

6975
final String kTemplateEnd = """
76+
let semaphore = DispatchSemaphore(value: 0)
77+
7078
let task = URLSession.shared.dataTask(with: request) { data, response, error in
79+
defer { semaphore.signal() }
80+
7181
if let error = error {
72-
print("Error: (error.localizedDescription)")
82+
print("Error: \\(error.localizedDescription)")
7383
return
7484
}
7585
guard let data = data else {
7686
print("No data received")
7787
return
7888
}
7989
if let responseString = String(data: data, encoding: .utf8) {
80-
print("Response: (responseString)")
90+
print("Response: \\(responseString)")
8191
}
8292
}
93+
8394
task.resume()
95+
96+
semaphore.wait()
8497
""";
8598

99+
86100
String? getCode(HttpRequestModel requestModel) {
87101
try {
88102
String result = kTemplateStart;
89103

90-
if (requestModel.hasFormData) {
91-
result += kTemplateFormDataImport;
92-
}
93-
94-
var rec =
95-
getValidRequestUri(requestModel.url, requestModel.enabledParams);
104+
var rec = getValidRequestUri(requestModel.url, requestModel.enabledParams);
96105
Uri? uri = rec.$1;
97106

98107
if (requestModel.hasFormData) {
108+
result += kTemplateFormDataImport;
109+
99110
var formDataList = requestModel.formDataMapList.map((param) {
100111
if (param['type'] == 'file') {
101112
final filePath = param['value'] as String;
102113
final fileName = path.basename(filePath);
103-
final fileExtension =
114+
final fileExtension =
104115
path.extension(fileName).toLowerCase().replaceFirst('.', '');
105116
return {
106117
'type': 'file',
@@ -122,17 +133,19 @@ task.resume()
122133
result += templateFormData.render({
123134
"formData": formDataList,
124135
});
125-
} else if (requestModel.hasJsonData) {
136+
}
137+
// Handle JSON data
138+
else if (requestModel.hasJsonData) {
126139
var templateJsonData = jj.Template(kTemplateJsonData);
127140
result += templateJsonData.render({
128-
"jsonData":
129-
requestModel.body!.replaceAll('"', '\\"').replaceAll('\n', '\\n'),
130-
});
131-
} else if (requestModel.hasTextData) {
141+
"jsonData": requestModel.body!
142+
});
143+
}
144+
// Handle text data
145+
else if (requestModel.hasTextData) {
132146
var templateTextData = jj.Template(kTemplateTextData);
133147
result += templateTextData.render({
134-
"textData":
135-
requestModel.body!.replaceAll('"', '\\"').replaceAll('\n', '\\n'),
148+
"textData": requestModel.body!
136149
});
137150
}
138151

@@ -144,19 +157,21 @@ task.resume()
144157

145158
var headers = requestModel.enabledHeadersMap;
146159
if (requestModel.hasFormData) {
147-
headers.putIfAbsent("Content-Type",
148-
() => "multipart/form-data; boundary=(boundary.stringValue)");
149-
} else if (requestModel.hasJsonData || requestModel.hasTextData) {
150-
headers.putIfAbsent(
151-
kHeaderContentType, () => requestModel.bodyContentType.header);
152-
}
160+
headers['Content-Type'] =
161+
"multipart/form-data; boundary=\\(boundary.stringValue)";
162+
} else if(requestModel.hasJsonData||requestModel.hasTextData){
163+
headers['Content-Type'] = 'application/json';
164+
}
165+
153166
if (headers.isNotEmpty) {
154167
var templateHeader = jj.Template(kTemplateHeaders);
155168
result += templateHeader.render({"headers": headers});
156169
}
157170

158-
if (requestModel.hasFormData || requestModel.hasBody) {
159-
result += kTemplateBody;
171+
if (requestModel.hasFormData) {
172+
result += kTemplateFormDataBody;
173+
} else if (requestModel.hasJsonData || requestModel.hasTextData) {
174+
result += kTemplateJsonTextBody;
160175
}
161176

162177
result += kTemplateEnd;

0 commit comments

Comments
 (0)