Skip to content

Commit 5502d3a

Browse files
committed
[GITHUB-10139][Fix] Generated Swift code not working for multipart/form-data video upload
1 parent fce73e6 commit 5502d3a

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

codegens/swift/lib/swift.js

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -111,29 +111,34 @@ function parseFormData (body, mode, trim, indent) {
111111
parameters = '[\n' + _.join(parameters, ',\n') + ']';
112112
bodySnippet = `let parameters = ${parameters} as [[String: Any]]\n\n`;
113113
bodySnippet += 'let boundary = "Boundary-\\(UUID().uuidString)"\n';
114-
bodySnippet += 'var body = ""\nvar error: Error? = nil\n';
114+
bodySnippet += 'var body = Data()\nvar error: Error? = nil\n';
115115
bodySnippet += 'for param in parameters {\n';
116116
bodySnippet += `${indent}if param["disabled"] != nil { continue }\n`;
117117
bodySnippet += `${indent}let paramName = param["key"]!\n`;
118-
bodySnippet += `${indent}body += "--\\(boundary)\\r\\n"\n`;
118+
bodySnippet += `${indent}body += Data("--\\(boundary)\\r\\n".utf8)\n`;
119119
// eslint-disable-next-line no-useless-escape
120-
bodySnippet += `${indent}body += "Content-Disposition:form-data; name=\\"\\(paramName)\\"\"\n`;
120+
bodySnippet += `${indent}body += Data("Content-Disposition:form-data; name=\\"\\(paramName)\\"\".utf8)\n`;
121121
bodySnippet += `${indent}if param["contentType"] != nil {\n`;
122-
bodySnippet += `${indent.repeat(2)}body += "\\r\\nContent-Type: \\(param["contentType"] as! String)"\n`;
122+
bodySnippet += `${indent.repeat(2)}body += Data("\\r\\nContent-Type: \\(param["contentType"] as! String)".utf8)\n`;
123123
bodySnippet += `${indent}}\n`;
124124
bodySnippet += `${indent}let paramType = param["type"] as! String\n`;
125125
bodySnippet += `${indent}if paramType == "text" {\n`;
126126
bodySnippet += `${indent.repeat(2)}let paramValue = param["value"] as! String\n`;
127-
bodySnippet += `${indent.repeat(2)}body += "\\r\\n\\r\\n\\(paramValue)\\r\\n"\n`;
127+
bodySnippet += `${indent.repeat(2)}body += Data("\\r\\n\\r\\n\\(paramValue)\\r\\n".utf8)\n`;
128128
bodySnippet += `${indent}} else {\n`;
129129
bodySnippet += `${indent.repeat(2)}let paramSrc = param["src"] as! String\n`;
130-
bodySnippet += `${indent.repeat(2)}let fileData = try NSData(contentsOfFile: paramSrc, options: []) as Data\n`;
131-
bodySnippet += `${indent.repeat(2)}let fileContent = String(data: fileData, encoding: .utf8)!\n`;
132-
bodySnippet += `${indent.repeat(2)}body += "; filename=\\"\\(paramSrc)\\"\\r\\n"\n`;
133-
bodySnippet += `${indent.repeat(2)} + "Content-Type: \\"content-type header\\"\\r\\n\\r\\n`;
134-
bodySnippet += '\\(fileContent)\\r\\n"\n';
135-
bodySnippet += `${indent}}\n}\nbody += "--\\(boundary)--\\r\\n";\n`;
136-
bodySnippet += 'let postData = body.data(using: .utf8)';
130+
bodySnippet += `${indent.repeat(2)}let fileURL = URL(fileURLWithPath: paramSrc)\n`;
131+
bodySnippet += `${indent.repeat(2)}if let fileContent = try? Data(contentsOf: fileURL) {`;
132+
bodySnippet += `${indent.repeat(3)}body += ("; filename=\\"\\(paramSrc)\\"\\r\\n".utf8)\n`;
133+
bodySnippet += `${indent.repeat(3)}body += Data("Content-Type: \\"content-type header\\"\\r\\n".utf8)\n`;
134+
bodySnippet += `${indent.repeat(3)}body += Data("\\r\\n".utf8)\n`;
135+
bodySnippet += `${indent.repeat(3)}body += fileContent\n`;
136+
bodySnippet += `${indent.repeat(3)}body += Data("\\r\\n".utf8)\n`;
137+
bodySnippet += `${indent.repeat(2)}}\n`;
138+
bodySnippet += `${indent}}\n`;
139+
bodySnippet += '}\n';
140+
bodySnippet += 'body += Data("--\\(boundary)--\\r\\n".utf8);\n';
141+
bodySnippet += 'let postData = body\n';
137142
return bodySnippet;
138143
}
139144

0 commit comments

Comments
 (0)