mirror of
https://github.com/LukeHagar/plexswift.git
synced 2025-12-09 04:20:58 +00:00
Regeneration
This commit is contained in:
102
Sources/Plexswift/internal/serialization/Parameters.swift
Normal file
102
Sources/Plexswift/internal/serialization/Parameters.swift
Normal file
@@ -0,0 +1,102 @@
|
||||
// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
|
||||
|
||||
import Foundation
|
||||
|
||||
struct SerializedParameter {
|
||||
let name: String
|
||||
let serialized: String?
|
||||
}
|
||||
|
||||
protocol ParameterDefaults {
|
||||
func defaultSerializedPathParameter(for key: String) throws -> String?
|
||||
func defaultQueryParameter(for key: String) -> AnyValue?
|
||||
}
|
||||
|
||||
// MARK: - Serialization Types
|
||||
|
||||
protocol PathParameterSerializable {
|
||||
func serializedPathParameters(formatOverride: SerializableFormat?) throws -> [String: String]
|
||||
}
|
||||
|
||||
protocol QueryParameterSerializable {
|
||||
func serializedQueryParameters(with parameterDefaults: ParameterDefaults?, formatOverride: SerializableFormat?) throws -> [QueryParameter]
|
||||
}
|
||||
|
||||
protocol HeaderParameterSerializable {
|
||||
func serializedHeaderParameters() throws -> [SerializedParameter]
|
||||
}
|
||||
|
||||
enum MultipartFormParameter {
|
||||
case value(name: String, serialized: String?)
|
||||
case file(name: String, filename: String?, data: Data?)
|
||||
}
|
||||
|
||||
protocol MultipartFormBodySerializable {
|
||||
func serializedMultipartFormParameters(formatOverride: SerializableFormat?) throws -> [MultipartFormParameter]
|
||||
}
|
||||
|
||||
protocol FormBodySerializable {
|
||||
func serializedFormParameters(formatOverride: SerializableFormat?) throws -> [SerializedParameter]
|
||||
}
|
||||
|
||||
// MARK: - Models
|
||||
|
||||
func serializePathParameterSerializable(
|
||||
_ pathParameterSerializable: PathParameterSerializable,
|
||||
with format: SerializableFormat
|
||||
) throws -> String {
|
||||
let fields = try pathParameterSerializable
|
||||
.serializedPathParameters(formatOverride: format)
|
||||
.map { (key, value) in
|
||||
SerializedParameter(name: key, serialized: value)
|
||||
}
|
||||
.sorted { a, b in
|
||||
a.name < b.name
|
||||
}
|
||||
return serializeModel(with: fields, format: format)
|
||||
}
|
||||
|
||||
func serializeQueryParameterSerializable(
|
||||
_ queryParameterSerializable: QueryParameterSerializable,
|
||||
with format: SerializableFormat
|
||||
) throws -> String {
|
||||
let fields = try queryParameterSerializable
|
||||
.serializedQueryParameters(with: nil, formatOverride: format)
|
||||
.compactMap { queryParameter -> SerializedParameter? in
|
||||
guard let key = queryParameter.key.last else { return nil }
|
||||
return SerializedParameter(name: key, serialized: queryParameter.serialized)
|
||||
}
|
||||
return serializeModel(with: fields, format: format)
|
||||
}
|
||||
|
||||
func serializeModel(
|
||||
with fields: [SerializedParameter],
|
||||
format: SerializableFormat
|
||||
) -> String {
|
||||
return fields.map { field in
|
||||
guard let serialized = field.serialized else { return nil }
|
||||
if format.explode {
|
||||
return "\(field.name)=\(serialized)"
|
||||
} else {
|
||||
return "\(field.name)\(format.separator)\(serialized)"
|
||||
}
|
||||
}.compactMap { $0 }.joined(separator: format.separator)
|
||||
}
|
||||
|
||||
// MARK: - Maps
|
||||
|
||||
extension Dictionary: MultipartFormBodySerializable where Key == String, Value: Serializable {
|
||||
func serializedMultipartFormParameters(formatOverride: SerializableFormat?) throws -> [MultipartFormParameter] {
|
||||
return try map { key, value in
|
||||
return .value(name: key, serialized: try value.serialize(with: formatOverride ?? .multipart))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension Dictionary: FormBodySerializable where Key == String, Value: Serializable {
|
||||
func serializedFormParameters(formatOverride: SerializableFormat?) throws -> [SerializedParameter] {
|
||||
return try map { key, value in
|
||||
return SerializedParameter(name: key, serialized: try value.serialize(with: formatOverride ?? .form(explode: false)))
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user