Skip to content

Commit

Permalink
fix: use multipart request for bulk_set_stream
Browse files Browse the repository at this point in the history
  • Loading branch information
metalurgical committed Dec 17, 2024
1 parent 9c9b48b commit de5bfc7
Showing 1 changed file with 14 additions and 20 deletions.
34 changes: 14 additions & 20 deletions Sources/ThresholdKey/StorageLayer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -51,29 +51,23 @@ public final class StorageLayer {
request.addValue("Content-Type", forHTTPHeaderField: "Access-Control-Allow-Headers")

if urlString.split(separator: "/").last == "bulk_set_stream" {
// let boundary = UUID().uuidString;
// request.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
let boundary = "Boundary-\(UUID().uuidString)"
request.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

let json = try! JSONSerialization.jsonObject(with: dataString.data(using: String.Encoding.utf8)!, options: .allowFragments) as! [[String: Any]]

// for item in json {
// let dataItem = try! JSONSerialization.data(withJSONObject: item, options: .prettyPrinted)
// requestData.append(StorageLayer.createMultipartBody(data: dataItem, boundary: boundary, file: "multipartData"))
// }

var form_data: [String] = []

// urlencoded item format: "(key)=(self.percentEscapeString(value))"
for (index, element) in json.enumerated() {
let json_elem = try! JSONSerialization.data(withJSONObject: element, options: .withoutEscapingSlashes)
let json_escaped_string = StorageLayer.percentEscapeString(string: String(data: json_elem, encoding: .utf8)!)
let final_string = String(index) + "=" + json_escaped_string
form_data.append(final_string)

var body_data = Data()

for (index, item) in json.enumerated() {
body_data.append("--\(boundary)\r\n".data(using: .utf8)!)
body_data.append("Content-Disposition: form-data; name=\"\(index)\"\r\n\r\n".data(using: .utf8)!)

let dataItem = String(data: try! JSONSerialization.data(withJSONObject: item), encoding: .utf8)!
body_data.append("\(dataItem)\r\n".data(using: .utf8)!)
}
let body_data = form_data.joined(separator: "&")

request.httpBody = body_data.data(using: String.Encoding.utf8)
body_data.append("--\(boundary)--\r\n".data(using: .utf8)!)
request.httpBody = body_data
} else {
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = dataString.data(using: String.Encoding.utf8)
Expand Down

0 comments on commit de5bfc7

Please sign in to comment.