in Sources/OSS/ClientObjectMultipart.swift [51:90]
func uploadPart(
_ request: UploadPartRequest,
_ options: OperationOptions? = nil
) async throws -> UploadPartResult {
var input = OperationInput(
operationName: "UploadPart",
method: "PUT",
headers: [
"Content-Type": "application/xml",
]
)
input.bucket = try request.bucket.ensureRequired(field: "request.bucket")
input.key = try request.key.ensureRequired(field: "request.key")
try request.uploadId.ensureRequired(field: "request.uploadId")
try request.partNumber.ensureRequired(field: "request.partNumber")
if let progress = request.progress {
input.metadata.set(
key: AttributeKeys.progressDelegate,
value: ProgressDelegateDesc(delegate: ProgressWithRetry(progress), upload: true)
)
}
if clientImpl.hasFeatureFlag(FeatureFlag.enableCRC64CheckUpload) {
input.metadata.append(
key: AttributeKeys.responseHandler,
value: ChekerUploadCrcResponseHandler()
)
}
var req = request
try Serde.serializeInput(&req, &input, [Serde.serializeUploadPart, Serde.addContentMd5, Serde.addContentType])
var output = try await clientImpl.execute(with: &input, args: options)
var result = UploadPartResult()
try Serde.deserializeOutput(&result, &output, [Serde.deserializeUploadPart])
return result
}