mirror of
https://github.com/LukeHagar/plexswift.git
synced 2025-12-06 12:47:44 +00:00
59 lines
2.3 KiB
Swift
59 lines
2.3 KiB
Swift
// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
|
|
|
|
import Foundation
|
|
|
|
func multipartContentType(with boundary: String) -> String {
|
|
return "multipart/form-data; boundary=\(boundary)"
|
|
}
|
|
|
|
func serializeMultipartFormData(with multipartFormBodySerializable: MultipartFormBodySerializable) throws -> (boundary: String, data: Data) {
|
|
let boundary = UUID().uuidString
|
|
|
|
var data = Data()
|
|
let parameters = try multipartFormBodySerializable.serializedMultipartFormParameters(formatOverride: nil)
|
|
parameters.forEach { parameter in
|
|
switch parameter {
|
|
case .value(name: let name, serialized: let serialized):
|
|
guard let serialized else { return }
|
|
|
|
data.append(utf8String: "--\(boundary)\r\n")
|
|
data.append(utf8String: "Content-Disposition: multipart/form-data; name=\"\(name)\"\r\n")
|
|
data.append(utf8String: "Content-Type: text/plain\r\n\r\n")
|
|
data.append(utf8String: "\(serialized)\r\n")
|
|
case .file(name: let name, filename: let filename, data: let content):
|
|
guard let filename, let content, let contentString = String(data: content, encoding: .ascii) else { return }
|
|
|
|
data.append(utf8String: "--\(boundary)\r\n")
|
|
data.append(utf8String: "Content-Disposition: multipart/form-data; name=\"\(name)\"; filename=\"\(filename)\"\r\n")
|
|
data.append(utf8String: "Content-Type: text/plain\r\n\r\n")
|
|
data.append(utf8String: "\(contentString)\r\n")
|
|
}
|
|
}
|
|
|
|
data.append(utf8String: "--\(boundary)--")
|
|
|
|
return (boundary: boundary, data: data)
|
|
}
|
|
|
|
func serializeFormData(with formBodySerializable: FormBodySerializable) throws -> Data? {
|
|
let encoded = (try formBodySerializable.serializedFormParameters(formatOverride: nil))
|
|
.compactMap { parameter -> (String, String)? in
|
|
guard let serialized = parameter.serialized else { return nil }
|
|
return (parameter.name, serialized)
|
|
}
|
|
.map { (name, serialized) in
|
|
return "\(name)=\(serialized)"
|
|
}
|
|
.joined(separator: "&")
|
|
|
|
return encoded.data(using: .utf8)
|
|
}
|
|
|
|
fileprivate extension Data {
|
|
mutating func append(utf8String: String) {
|
|
if let data = utf8String.data(using: .utf8) {
|
|
append(data)
|
|
}
|
|
}
|
|
}
|