1 /*
2 * Copyright 2009-2017 Alibaba Cloud All rights reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17
18 #include <alibabacloud/oss/model/InitiateMultipartUploadRequest.h>
19 #include <alibabacloud/oss/http/HttpType.h>
20 #include "utils/Utils.h"
21 #include <sstream>
22 using namespace AlibabaCloud::OSS;
23
InitiateMultipartUploadRequest(const std::string & bucket,const std::string & key)24 InitiateMultipartUploadRequest::InitiateMultipartUploadRequest(const std::string &bucket, const std::string &key) :
25 InitiateMultipartUploadRequest(bucket, key, ObjectMetaData())
26 {
27 }
28
InitiateMultipartUploadRequest(const std::string & bucket,const std::string & key,const ObjectMetaData & metaData)29 InitiateMultipartUploadRequest::InitiateMultipartUploadRequest(const std::string &bucket, const std::string &key,
30 const ObjectMetaData &metaData) :
31 OssObjectRequest(bucket, key),
32 metaData_(metaData),
33 encodingTypeIsSet_(false),
34 sequential_(false)
35 {
36 }
37
setEncodingType(const std::string & encodingType)38 void InitiateMultipartUploadRequest::setEncodingType(const std::string &encodingType)
39 {
40 encodingType_ = encodingType;
41 encodingTypeIsSet_ = true;
42 }
43
setCacheControl(const std::string & value)44 void InitiateMultipartUploadRequest::setCacheControl(const std::string &value)
45 {
46 metaData_.addHeader(Http::CACHE_CONTROL, value);
47 }
48
setContentDisposition(const std::string & value)49 void InitiateMultipartUploadRequest::setContentDisposition(const std::string &value)
50 {
51 metaData_.addHeader(Http::CONTENT_DISPOSITION, value);
52 }
53
setContentEncoding(const std::string & value)54 void InitiateMultipartUploadRequest::setContentEncoding(const std::string &value)
55 {
56 metaData_.addHeader(Http::CONTENT_ENCODING, value);
57 }
58
setExpires(const std::string & value)59 void InitiateMultipartUploadRequest::setExpires(const std::string &value)
60 {
61 metaData_.addHeader(Http::EXPIRES, value);
62 }
63
setTagging(const std::string & value)64 void InitiateMultipartUploadRequest::setTagging(const std::string& value)
65 {
66 metaData_.addHeader("x-oss-tagging", value);
67 }
68
setSequential(bool value)69 void InitiateMultipartUploadRequest::setSequential(bool value)
70 {
71 sequential_ = value;
72 }
73
MetaData()74 ObjectMetaData &InitiateMultipartUploadRequest::MetaData()
75 {
76 return metaData_;
77 }
78
specialHeaders() const79 HeaderCollection InitiateMultipartUploadRequest::specialHeaders() const
80 {
81 auto headers = metaData_.toHeaderCollection();
82 if (headers.find(Http::CONTENT_TYPE) == headers.end()) {
83 headers[Http::CONTENT_TYPE] = LookupMimeType(Key());
84 }
85
86 auto baseHeaders = OssObjectRequest::specialHeaders();
87 headers.insert(baseHeaders.begin(), baseHeaders.end());
88
89 return headers;
90 }
91
specialParameters() const92 ParameterCollection InitiateMultipartUploadRequest::specialParameters() const
93 {
94 ParameterCollection parameters;
95 parameters["uploads"] = "";
96 if (encodingTypeIsSet_) {
97 parameters["encoding-type"] = encodingType_;
98 }
99
100 if (sequential_) {
101 parameters["sequential"] = "";
102 }
103 return parameters;
104 }
105