Sources/OSS/Transform/SerdeService.swift (60 lines of code) (raw):
import Foundation
// MARK: - ListBuckets
extension Serde {
static func serializeListBuckets(
_ request: inout ListBucketsRequest,
_ input: inout OperationInput
) throws {
if let value = request.resourceGroupId {
input.headers["x-oss-resource-group-id"] = value
}
if let value = request.prefix {
input.parameters["prefix"] = value
}
if let value = request.marker {
input.parameters["marker"] = value
}
if let value = request.maxKeys {
input.parameters["max-keys"] = String(value)
}
}
static func deserializeListBuckets(
_ result: inout ListBucketsResult,
_ output: inout OperationOutput
) throws {
let body: [String: Any] = try Serde.deserializeXml(output.body, "ListAllMyBucketsResult")
result.prefix = body["Prefix"] as? String
result.marker = body["Marker"] as? String
result.nextMarker = body["NextMarker"] as? String
result.maxKeys = (body["MaxKeys"] as? String)?.toInt()
result.isTruncated = (body["IsTruncated"] as? String)?.toBool()
if let ownerData = body["Owner"] as? [String: String] {
var owner = Owner()
owner.displayName = ownerData["DisplayName"]
owner.id = ownerData["ID"]
result.owner = owner
}
if let bucketContents = body["Buckets"] as? [String: Any],
let contents = bucketContents["Bucket"]
{
var buckets: [BucketSummary] = []
var responseBuckets: [[String: Any]] = []
if let _responseBuckets = contents as? [[String: Any]] {
responseBuckets.append(contentsOf: _responseBuckets)
} else if let content = contents as? [String: Any] {
responseBuckets.append(content)
}
for responseBucket in responseBuckets {
var bucket = BucketSummary()
bucket.name = responseBucket["Name"] as? String
bucket.location = responseBucket["Location"] as? String
bucket.extranetEndpoint = responseBucket["ExtranetEndpoint"] as? String
bucket.intranetEndpoint = responseBucket["IntranetEndpoint"] as? String
bucket.region = responseBucket["Region"] as? String
bucket.storageClass = responseBucket["StorageClass"] as? String
bucket.creationDate = (responseBucket["CreationDate"] as? String)?.toDate()
buckets.append(bucket)
}
result.buckets = buckets
}
}
}