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 #pragma once
18 #include <alibabacloud/oss/Export.h>
19 #include <alibabacloud/oss/OssRequest.h>
20 #include <alibabacloud/oss/Types.h>
21 #include <alibabacloud/oss/model/ObjectMetaData.h>
22 #include <alibabacloud/oss/http/HttpType.h>
23 
24 namespace AlibabaCloud
25 {
26 namespace OSS
27 {
28     class ALIBABACLOUD_OSS_EXPORT UploadObjectRequest : public OssResumableBaseRequest
29     {
30     public:
31         UploadObjectRequest(const std::string& bucket, const std::string& key,
32             const std::string& filePath, const std::string& checkpointDir,
33             const uint64_t partSize, const uint32_t threadNum);
34         UploadObjectRequest(const std::string& bucket, const std::string& key,
35             const std::string& filePath, const std::string &checkpointDir,
36             const uint64_t partSize, const uint32_t threadNum, const ObjectMetaData& meta);
37         UploadObjectRequest(const std::string& bucket, const std::string& key,
38             const std::string& filePath, const std::string& checkpointDir,
39             const ObjectMetaData& meta);
40         UploadObjectRequest(const std::string& bucket, const std::string& key,
41             const std::string& filePath, const std::string& checkpointDir);
42         UploadObjectRequest(const std::string& bucket, const std::string& key,
43             const std::string& filePath);
44 
Content()45         std::shared_ptr<std::iostream> Content(){ return content_; }
EncodingType()46         const std::string& EncodingType() const{return encodingType_;}
FilePath()47         const std::string& FilePath() const{return filePath_;}
MetaData()48         const ObjectMetaData& MetaData() const { return metaData_; }
MetaData()49         ObjectMetaData& MetaData() { return metaData_; }
50 
51         UploadObjectRequest(const std::string& bucket, const std::string& key,
52             const std::wstring& filePath, const std::wstring& checkpointDir,
53             const uint64_t partSize, const uint32_t threadNum);
54         UploadObjectRequest(const std::string& bucket, const std::string& key,
55             const std::wstring& filePath, const std::wstring &checkpointDir,
56             const uint64_t partSize, const uint32_t threadNum, const ObjectMetaData& meta);
57         UploadObjectRequest(const std::string& bucket, const std::string& key,
58             const std::wstring& filePath, const std::wstring& checkpointDir,
59             const ObjectMetaData& meta);
60         UploadObjectRequest(const std::string& bucket, const std::string& key,
61             const std::wstring& filePath, const std::wstring& checkpointDir);
62         UploadObjectRequest(const std::string& bucket, const std::string& key,
63             const std::wstring& filePath);
FilePathW()64         const std::wstring& FilePathW() const { return filePathW_; }
65 
setCacheControl(const std::string & value)66         void setCacheControl(const std::string& value){metaData_.addHeader(Http::CACHE_CONTROL, value);}
setContentDisposition(const std::string & value)67         void setContentDisposition(const std::string& value){metaData_.addHeader(Http::CONTENT_DISPOSITION, value);}
setContentEncoding(const std::string & value)68         void setContentEncoding(const std::string& value){metaData_.addHeader(Http::CONTENT_ENCODING, value);}
setExpires(const std::string & value)69         void setExpires(const std::string& value){metaData_.addHeader(Http::EXPIRES, value);}
70         void setAcl(CannedAccessControlList& acl);
71         void setCallback(const std::string& callback, const std::string& callbackVar = "");
setEncodingType(const std::string & type)72         void setEncodingType(const std::string& type) {encodingType_ = type; }
73         void setTagging(const std::string& value);
74 
75     protected:
76         virtual int validate() const;
77     private:
78         std::string filePath_;
79         std::shared_ptr<std::iostream> content_;
80         ObjectMetaData metaData_;
81         std::string encodingType_;
82         std::wstring filePathW_;
83         bool isFileExist_;
84     };
85 }
86 }