sdk/src/model/CompleteMultipartUploadRequest.cc (102 lines of code) (raw):

/* * Copyright 2009-2017 Alibaba Cloud All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <alibabacloud/oss/model/CompleteMultipartUploadRequest.h> #include <sstream> #include "../utils/Utils.h" #include "ModelError.h" using namespace AlibabaCloud::OSS; CompleteMultipartUploadRequest::CompleteMultipartUploadRequest( const std::string &bucket, const std::string &key) : CompleteMultipartUploadRequest(bucket, key, PartList()) { } CompleteMultipartUploadRequest::CompleteMultipartUploadRequest( const std::string &bucket, const std::string &key, const PartList &partList) : CompleteMultipartUploadRequest(bucket, key, partList, "") { } CompleteMultipartUploadRequest::CompleteMultipartUploadRequest( const std::string &bucket, const std::string &key, const PartList &partList, const std::string &uploadId): OssObjectRequest(bucket, key), partList_(partList), uploadId_(uploadId), encodingTypeIsSet_(false) { setFlags(Flags() | REQUEST_FLAG_CONTENTMD5); } int CompleteMultipartUploadRequest::validate() const { int ret = OssObjectRequest::validate(); if (ret != 0) { return ret; } if(partList_.empty()) return ARG_ERROR_MULTIPARTUPLOAD_PARTLIST_EMPTY; return 0; } void CompleteMultipartUploadRequest::setPartList(const PartList &partList) { partList_ = partList; } void CompleteMultipartUploadRequest::setEncodingType(const std::string &encodingType) { encodingType_ = encodingType; encodingTypeIsSet_ = true; } void CompleteMultipartUploadRequest::setUploadId(const std::string &uploadId) { uploadId_ = uploadId; } void CompleteMultipartUploadRequest::setAcl(CannedAccessControlList acl) { metaData_.addHeader("x-oss-object-acl", ToAclName(acl)); } void CompleteMultipartUploadRequest::setCallback(const std::string& callback, const std::string& callbackVar) { metaData_.removeHeader("x-oss-callback"); metaData_.removeHeader("x-oss-callback-var"); if (!callback.empty()) { metaData_.addHeader("x-oss-callback", callback); } if (!callbackVar.empty()) { metaData_.addHeader("x-oss-callback-var", callbackVar); } } ObjectMetaData& CompleteMultipartUploadRequest::MetaData() { return metaData_; } ParameterCollection CompleteMultipartUploadRequest::specialParameters()const { ParameterCollection parameters; parameters["uploadId"] = uploadId_; if(encodingTypeIsSet_) { parameters["encoding-type"] = encodingType_; } return parameters; } HeaderCollection CompleteMultipartUploadRequest::specialHeaders() const { auto headers = metaData_.toHeaderCollection(); auto baseHeaders = OssObjectRequest::specialHeaders(); headers.insert(baseHeaders.begin(), baseHeaders.end()); return headers; } std::string CompleteMultipartUploadRequest::payload() const { std::stringstream ss; ss << "<CompleteMultipartUpload>" << std::endl; for (auto const &part : partList_) { ss << "<Part>" << std::endl; ss << " <PartNumber>"; ss << std::to_string(part.PartNumber()); ss << "</PartNumber>" << std::endl; ss << " <ETag>"; ss << part.ETag(); ss << "</ETag>" << std::endl; ss << "</Part>"; } ss << "</CompleteMultipartUpload>"; return ss.str(); }