func uploadPart()

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
    }