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 <sstream>
19 #include <alibabacloud/oss/model/ListMultipartUploadsRequest.h>
20 #include "utils/Utils.h"
21 #include "ModelError.h"
22 #include <alibabacloud/oss/Const.h>
23 
24 using namespace AlibabaCloud::OSS;
25 using std::stringstream;
26 
ListMultipartUploadsRequest(const std::string & bucket)27 ListMultipartUploadsRequest::ListMultipartUploadsRequest(const std::string &bucket):
28     OssBucketRequest(bucket),
29     delimiterIsSet_(false),
30     keyMarkerIsSet_(false),
31     prefixIsSet_(false),
32     uploadIdMarkerIsSet_(false),
33     encodingTypeIsSet_(false),
34     maxUploadsIsSet_(false),
35     requestPayer_(RequestPayer::NotSet)
36 {
37 }
38 
setDelimiter(const std::string & delimiter)39 void ListMultipartUploadsRequest::setDelimiter(const std::string &delimiter)
40 {
41     delimiter_ = delimiter;
42     delimiterIsSet_ = true;
43 }
44 
setMaxUploads(uint32_t maxUploads)45 void ListMultipartUploadsRequest::setMaxUploads(uint32_t maxUploads)
46 {
47     maxUploads_ = maxUploads > MaxUploads ? MaxUploads : maxUploads;
48     maxUploadsIsSet_ = true;
49 }
50 
setKeyMarker(const std::string & keyMarker)51 void ListMultipartUploadsRequest::setKeyMarker(const std::string &keyMarker)
52 {
53     keyMarker_ = keyMarker;
54     keyMarkerIsSet_ = true;
55 }
56 
setPrefix(const std::string & prefix)57 void ListMultipartUploadsRequest::setPrefix(const std::string &prefix)
58 {
59     prefix_ = prefix;
60     prefixIsSet_ = true;
61 }
62 
setUploadIdMarker(const std::string & uploadIdMarker)63 void ListMultipartUploadsRequest::setUploadIdMarker(const std::string &uploadIdMarker)
64 {
65     uploadIdMarker_ = uploadIdMarker;
66     uploadIdMarkerIsSet_ = true;
67 }
68 
setEncodingType(const std::string & encodingType)69 void ListMultipartUploadsRequest::setEncodingType(const std::string &encodingType)
70 {
71     encodingType_ = encodingType;
72     encodingTypeIsSet_ = true;
73 }
74 
setRequestPayer(RequestPayer value)75 void ListMultipartUploadsRequest::setRequestPayer(RequestPayer value)
76 {
77     requestPayer_ = value;
78 }
79 
specialParameters() const80 ParameterCollection ListMultipartUploadsRequest::specialParameters() const
81 {
82     ParameterCollection parameters;
83     parameters["uploads"] = "";
84     if(delimiterIsSet_){
85         parameters["delimiter"] = delimiter_;
86     }
87 
88     if (maxUploadsIsSet_) {
89         parameters["max-uploads"] = std::to_string(maxUploads_);
90     }
91 
92     if(keyMarkerIsSet_){
93         parameters["key-marker"] = keyMarker_;
94         if (uploadIdMarkerIsSet_) {
95             parameters["upload-id-marker"] = uploadIdMarker_;
96         }
97     }
98 
99     if(prefixIsSet_){
100         parameters["prefix"] = prefix_;
101     }
102 
103     if(encodingTypeIsSet_){
104         parameters["encoding-type"] = encodingType_;
105     }
106     return parameters;
107 }
108 
specialHeaders() const109 HeaderCollection ListMultipartUploadsRequest::specialHeaders() const
110 {
111     HeaderCollection headers;
112     if (requestPayer_ == RequestPayer::Requester) {
113         headers["x-oss-request-payer"] = ToLower(ToRequestPayerName(RequestPayer::Requester));
114     }
115     return headers;
116 }
117