Преглед изворни кода

完成dump文件上传到阿里云OSS

张洋 пре 6 година
родитељ
комит
1b54f72f2f
100 измењених фајлова са 4210 додато и 0 уклоњено
  1. BIN
      bin/Win32/Debug/lewaimai_pos_windows/dump/2020-03-05-19-36-59.dmp
  2. BIN
      bin/Win32/Debug/lewaimai_pos_windows/dump/2020-03-05-20-07-24.dmp
  3. BIN
      bin/Win32/Debug/lewaimai_pos_windows/dump/2020-03-05-20-08-20.dmp
  4. BIN
      bin/Win32/Debug/lewaimai_pos_windows/libeay32.dll
  5. BIN
      bin/Win32/Debug/lewaimai_pos_windows/ssleay32.dll
  6. BIN
      bin/Win32/Debug/lewaimai_pos_windows/zlibwapi.dll
  7. BIN
      bin/Win32/Release/lewaimai_pos_windows/dump/2020-03-05-19-59-49.dmp
  8. BIN
      bin/Win32/Release/lewaimai_pos_windows/libeay32.dll
  9. 1 0
      bin/Win32/Release/lewaimai_pos_windows/log/pos.log
  10. 0 0
      bin/Win32/Release/lewaimai_pos_windows/log/pos_error.log
  11. BIN
      bin/Win32/Release/lewaimai_pos_windows/ssleay32.dll
  12. BIN
      bin/Win32/Release/lewaimai_pos_windows/zlibwapi.dll
  13. BIN
      dll/debug/libeay32.dll
  14. BIN
      dll/debug/ssleay32.dll
  15. BIN
      dll/debug/zlibwapi.dll
  16. BIN
      dll/release/libeay32.dll
  17. BIN
      dll/release/ssleay32.dll
  18. BIN
      dll/release/zlibwapi.dll
  19. BIN
      dump/1.0.2.1/2020-03-04-13-15-44.dmp
  20. 23 0
      include/alibabacloud/oss/Config.h
  21. 64 0
      include/alibabacloud/oss/Const.h
  22. 29 0
      include/alibabacloud/oss/Export.h
  23. 38 0
      include/alibabacloud/oss/Global.h
  24. 269 0
      include/alibabacloud/oss/OssClient.h
  25. 86 0
      include/alibabacloud/oss/OssError.h
  26. 228 0
      include/alibabacloud/oss/OssFwd.h
  27. 188 0
      include/alibabacloud/oss/OssRequest.h
  28. 37 0
      include/alibabacloud/oss/OssResponse.h
  29. 56 0
      include/alibabacloud/oss/OssResult.h
  30. 61 0
      include/alibabacloud/oss/ServiceRequest.h
  31. 49 0
      include/alibabacloud/oss/ServiceResult.h
  32. 166 0
      include/alibabacloud/oss/Types.h
  33. 43 0
      include/alibabacloud/oss/auth/Credentials.h
  34. 34 0
      include/alibabacloud/oss/auth/CredentialsProvider.h
  35. 38 0
      include/alibabacloud/oss/client/AsyncCallerContext.h
  36. 117 0
      include/alibabacloud/oss/client/ClientConfiguration.h
  37. 67 0
      include/alibabacloud/oss/client/Error.h
  38. 34 0
      include/alibabacloud/oss/client/RateLimiter.h
  39. 33 0
      include/alibabacloud/oss/client/RetryStrategy.h
  40. 74 0
      include/alibabacloud/oss/http/HttpType.h
  41. 37 0
      include/alibabacloud/oss/model/AbortMultipartUploadRequest.h
  42. 57 0
      include/alibabacloud/oss/model/AppendObjectRequest.h
  43. 41 0
      include/alibabacloud/oss/model/AppendObjectResult.h
  44. 50 0
      include/alibabacloud/oss/model/Bucket.h
  45. 61 0
      include/alibabacloud/oss/model/CORSRule.h
  46. 57 0
      include/alibabacloud/oss/model/CompleteMultipartUploadRequest.h
  47. 53 0
      include/alibabacloud/oss/model/CompleteMultipartUploadResult.h
  48. 55 0
      include/alibabacloud/oss/model/CopyObjectRequest.h
  49. 50 0
      include/alibabacloud/oss/model/CopyObjectResult.h
  50. 42 0
      include/alibabacloud/oss/model/CreateBucketRequest.h
  51. 45 0
      include/alibabacloud/oss/model/CreateSelectObjectMetaRequest.h
  52. 60 0
      include/alibabacloud/oss/model/CreateSelectObjectMetaResult.h
  53. 43 0
      include/alibabacloud/oss/model/CreateSymlinkRequest.h
  54. 39 0
      include/alibabacloud/oss/model/CreateSymlinkResult.h
  55. 33 0
      include/alibabacloud/oss/model/DeleteBucketCorsRequest.h
  56. 33 0
      include/alibabacloud/oss/model/DeleteBucketEncryptionRequest.h
  57. 35 0
      include/alibabacloud/oss/model/DeleteBucketLifecycleRequest.h
  58. 34 0
      include/alibabacloud/oss/model/DeleteBucketLoggingRequest.h
  59. 34 0
      include/alibabacloud/oss/model/DeleteBucketPolicyRequest.h
  60. 33 0
      include/alibabacloud/oss/model/DeleteBucketQosInfoRequest.h
  61. 34 0
      include/alibabacloud/oss/model/DeleteBucketRequest.h
  62. 33 0
      include/alibabacloud/oss/model/DeleteBucketTaggingRequest.h
  63. 33 0
      include/alibabacloud/oss/model/DeleteBucketWebsiteRequest.h
  64. 34 0
      include/alibabacloud/oss/model/DeleteLiveChannelRequest.h
  65. 40 0
      include/alibabacloud/oss/model/DeleteObjectRequest.h
  66. 37 0
      include/alibabacloud/oss/model/DeleteObjectResult.h
  67. 33 0
      include/alibabacloud/oss/model/DeleteObjectTaggingRequest.h
  68. 33 0
      include/alibabacloud/oss/model/DeleteObjectTaggingResult.h
  69. 69 0
      include/alibabacloud/oss/model/DeleteObjectVersionsRequest.h
  70. 61 0
      include/alibabacloud/oss/model/DeleteObjectVersionsResult.h
  71. 51 0
      include/alibabacloud/oss/model/DeleteObjectsRequest.h
  72. 41 0
      include/alibabacloud/oss/model/DeleteObjectsResult.h
  73. 89 0
      include/alibabacloud/oss/model/DownloadObjectRequest.h
  74. 55 0
      include/alibabacloud/oss/model/GeneratePresignedUrlRequest.h
  75. 44 0
      include/alibabacloud/oss/model/GenerateRTMPSignedUrlRequest.h
  76. 33 0
      include/alibabacloud/oss/model/GetBucketAclRequest.h
  77. 42 0
      include/alibabacloud/oss/model/GetBucketAclResult.h
  78. 33 0
      include/alibabacloud/oss/model/GetBucketCorsRequest.h
  79. 38 0
      include/alibabacloud/oss/model/GetBucketCorsResult.h
  80. 34 0
      include/alibabacloud/oss/model/GetBucketEncryptionRequest.h
  81. 41 0
      include/alibabacloud/oss/model/GetBucketEncryptionResult.h
  82. 33 0
      include/alibabacloud/oss/model/GetBucketInfoRequest.h
  83. 63 0
      include/alibabacloud/oss/model/GetBucketInfoResult.h
  84. 33 0
      include/alibabacloud/oss/model/GetBucketLifecycleRequest.h
  85. 39 0
      include/alibabacloud/oss/model/GetBucketLifecycleResult.h
  86. 33 0
      include/alibabacloud/oss/model/GetBucketLocationRequest.h
  87. 39 0
      include/alibabacloud/oss/model/GetBucketLocationResult.h
  88. 33 0
      include/alibabacloud/oss/model/GetBucketLoggingRequest.h
  89. 39 0
      include/alibabacloud/oss/model/GetBucketLoggingResult.h
  90. 33 0
      include/alibabacloud/oss/model/GetBucketPaymentRequest.h
  91. 39 0
      include/alibabacloud/oss/model/GetBucketPaymentResult.h
  92. 33 0
      include/alibabacloud/oss/model/GetBucketPolicyRequest.h
  93. 38 0
      include/alibabacloud/oss/model/GetBucketPolicyResult.h
  94. 33 0
      include/alibabacloud/oss/model/GetBucketQosInfoRequest.h
  95. 38 0
      include/alibabacloud/oss/model/GetBucketQosInfoResult.h
  96. 33 0
      include/alibabacloud/oss/model/GetBucketRefererRequest.h
  97. 41 0
      include/alibabacloud/oss/model/GetBucketRefererResult.h
  98. 33 0
      include/alibabacloud/oss/model/GetBucketStatRequest.h
  99. 42 0
      include/alibabacloud/oss/model/GetBucketStatResult.h
  100. 0 0
      include/alibabacloud/oss/model/GetBucketStorageCapacityRequest.h

BIN
bin/Win32/Debug/lewaimai_pos_windows/dump/2020-03-05-19-36-59.dmp


BIN
bin/Win32/Debug/lewaimai_pos_windows/dump/2020-03-05-20-07-24.dmp


BIN
bin/Win32/Debug/lewaimai_pos_windows/dump/2020-03-05-20-08-20.dmp


BIN
bin/Win32/Debug/lewaimai_pos_windows/libeay32.dll


BIN
bin/Win32/Debug/lewaimai_pos_windows/ssleay32.dll


BIN
bin/Win32/Debug/lewaimai_pos_windows/zlibwapi.dll


BIN
bin/Win32/Release/lewaimai_pos_windows/dump/2020-03-05-19-59-49.dmp


BIN
bin/Win32/Release/lewaimai_pos_windows/libeay32.dll


+ 1 - 0
bin/Win32/Release/lewaimai_pos_windows/log/pos.log

@@ -0,0 +1 @@
+2020-03-05 19:59:49[INFO] - н¨ dump Ŀ¼³É¹¦£¡ [e:\work\code\lewaimai_pos_windows\lewaimai_pos_windows\tool\cexceptiondmp.cpp:22]

+ 0 - 0
bin/Win32/Release/lewaimai_pos_windows/log/pos_error.log


BIN
bin/Win32/Release/lewaimai_pos_windows/ssleay32.dll


BIN
bin/Win32/Release/lewaimai_pos_windows/zlibwapi.dll


BIN
dll/debug/libeay32.dll


BIN
dll/debug/ssleay32.dll


BIN
dll/debug/zlibwapi.dll


BIN
dll/release/libeay32.dll


BIN
dll/release/ssleay32.dll


BIN
dll/release/zlibwapi.dll


BIN
dump/1.0.2.1/2020-03-04-13-15-44.dmp


+ 23 - 0
include/alibabacloud/oss/Config.h

@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+// version = (major << 16) + (minor << 8) + patch
+#define ALIBABACLOUD_OSS_VERSION ((1 << 16) + (7 << 8) + 0)
+
+#define ALIBABACLOUD_OSS_VERSION_STR "1.7.0"
+

+ 64 - 0
include/alibabacloud/oss/Const.h

@@ -0,0 +1,64 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <cstdint>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    const int64_t MaxFileSize = 5LL * 1024LL * 1024LL * 1024LL;
+    const int32_t MaxPrefixStringSize = 1024;
+    const int32_t MaxMarkerStringSize = 1024;
+    const int32_t MaxDelimiterStringSize = 1024;
+    const int32_t MaxReturnedKeys = 1000;
+    const int32_t MaxUploads = 1000;
+    const int32_t DeleteObjectsUpperLimit = 1000;
+    const int32_t BucketCorsRuleLimit = 10;
+    const int32_t LifecycleRuleLimit = 1000;
+    const int32_t ObjectNameLengthLimit = 1023;
+    const int32_t PartNumberUpperLimit = 10000;
+    const int32_t DefaultPartSize = 8 * 1024 * 1024;
+    const int32_t PartSizeLowerLimit = 100 * 1024;
+    const int32_t MaxPathLength = 124;
+    const int32_t MinPathLength = 4;
+    const int32_t DefaultResumableThreadNum = 3;
+    const uint32_t MaxLiveChannelNameLength = 1023;
+    const uint32_t MaxLiveChannelDescriptionLength = 128;
+    const uint32_t MinLiveChannelFragCount = 1;
+    const uint32_t MaxLiveChannelFragCount = 100;
+    const uint32_t MinLiveChannelFragDuration = 1;
+    const uint32_t MaxLiveChannelFragDuration = 100;
+    const uint32_t MinLiveChannelPlayListLength = 6;
+    const uint32_t MaxLiveChannelPlayListLength = 128;
+    const uint32_t MinLiveChannelInterval = 1;
+    const uint32_t MaxLiveChannelInterval = 100;
+    const uint64_t SecondsOfDay = 24*60*60;
+    const uint32_t MaxListLiveChannelKeys = 1000;
+    const uint32_t TagKeyLengthLimit = 128;
+    const uint32_t TagValueLengthLimit = 256;
+    const uint32_t MaxTagSize = 10;
+
+#ifdef _WIN32
+    const char PATH_DELIMITER = '\\';
+    const wchar_t WPATH_DELIMITER = L'\\';
+#else
+    const char PATH_DELIMITER = '/';
+    const wchar_t WPATH_DELIMITER = L'/';
+#endif
+}
+}

+ 29 - 0
include/alibabacloud/oss/Export.h

@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include "Global.h"
+
+#if defined(ALIBABACLOUD_SHARED)
+#   if defined(ALIBABACLOUD_OSS_LIBRARY)
+#       define ALIBABACLOUD_OSS_EXPORT ALIBABACLOUD_DECL_EXPORT
+#   else
+#       define ALIBABACLOUD_OSS_EXPORT ALIBABACLOUD_DECL_IMPORT
+#   endif
+#else
+#   define ALIBABACLOUD_OSS_EXPORT
+#endif
+

+ 38 - 0
include/alibabacloud/oss/Global.h

@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#include "Config.h"
+
+#if defined(_WIN32)
+#   ifdef _MSC_VER
+#       pragma warning(disable : 4251)
+#   endif // _MSC_VER
+#   define ALIBABACLOUD_DECL_EXPORT __declspec(dllexport)
+#   define ALIBABACLOUD_DECL_IMPORT __declspec(dllimport)
+#elif __GNUC__ >= 4
+#   define ALIBABACLOUD_DECL_EXPORT __attribute__((visibility("default")))
+#   define ALIBABACLOUD_DECL_IMPORT __attribute__((visibility("default")))
+#endif
+
+#if !defined(ALIBABACLOUD_DECL_EXPORT)
+#   define ALIBABACLOUD_DECL_EXPORT
+#endif
+
+#if !defined(ALIBABACLOUD_DECL_IMPORT)
+#   define ALIBABACLOUD_DECL_IMPORT
+#endif

+ 269 - 0
include/alibabacloud/oss/OssClient.h

@@ -0,0 +1,269 @@
+/*
+* 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.
+*/
+
+#pragma once
+
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/client/ClientConfiguration.h>
+#include <alibabacloud/oss/auth/CredentialsProvider.h>
+#include <alibabacloud/oss/OssFwd.h>
+#include <alibabacloud/oss/client/AsyncCallerContext.h>
+#include <future>
+#include <ctime>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    /*Global Init/Deinit*/
+    void ALIBABACLOUD_OSS_EXPORT InitializeSdk();
+    bool ALIBABACLOUD_OSS_EXPORT IsSdkInitialized();
+    void ALIBABACLOUD_OSS_EXPORT ShutdownSdk();
+
+    /*Log*/
+    void ALIBABACLOUD_OSS_EXPORT SetLogLevel(LogLevel level);
+    void ALIBABACLOUD_OSS_EXPORT SetLogCallback(LogCallback callback);
+
+    /*Utils*/
+    std::string ALIBABACLOUD_OSS_EXPORT ComputeContentMD5(const char *data, size_t size);
+    std::string ALIBABACLOUD_OSS_EXPORT ComputeContentMD5(std::istream& stream);
+    std::string ALIBABACLOUD_OSS_EXPORT ComputeContentETag(const char* data, size_t size);
+    std::string ALIBABACLOUD_OSS_EXPORT ComputeContentETag(std::istream& stream);
+    std::string ALIBABACLOUD_OSS_EXPORT UrlEncode(const std::string& src);
+    std::string ALIBABACLOUD_OSS_EXPORT UrlDecode(const std::string& src);
+    std::string ALIBABACLOUD_OSS_EXPORT Base64Encode(const std::string& src);
+    std::string ALIBABACLOUD_OSS_EXPORT Base64Encode(const char* src, int len);
+    std::string ALIBABACLOUD_OSS_EXPORT Base64EncodeUrlSafe(const std::string& src);
+    std::string ALIBABACLOUD_OSS_EXPORT Base64EncodeUrlSafe(const char* src, int len);
+    std::string ALIBABACLOUD_OSS_EXPORT ToGmtTime(std::time_t& t);
+    std::string ALIBABACLOUD_OSS_EXPORT ToUtcTime(std::time_t& t);
+    std::time_t ALIBABACLOUD_OSS_EXPORT UtcToUnixTime(const std::string& t);
+    uint64_t    ALIBABACLOUD_OSS_EXPORT ComputeCRC64(uint64_t crc, void* buf, size_t len);
+    uint64_t    ALIBABACLOUD_OSS_EXPORT CombineCRC64(uint64_t crc1, uint64_t crc2, uintmax_t len2);
+
+    /*Aysnc APIs*/
+    class OssClient;
+    using ListObjectAsyncHandler = std::function<void(const AlibabaCloud::OSS::OssClient*, const ListObjectsRequest&, const ListObjectOutcome&, const std::shared_ptr<const AsyncCallerContext>&)>;
+    using GetObjectAsyncHandler  = std::function<void(const AlibabaCloud::OSS::OssClient*, const GetObjectRequest&, const GetObjectOutcome&, const std::shared_ptr<const AsyncCallerContext>&)>;
+    using PutObjectAsyncHandler = std::function<void(const AlibabaCloud::OSS::OssClient*, const PutObjectRequest&, const PutObjectOutcome&, const std::shared_ptr<const AsyncCallerContext>&)>;
+    using UploadPartAsyncHandler = std::function<void(const AlibabaCloud::OSS::OssClient*, const UploadPartRequest&, const PutObjectOutcome&, const std::shared_ptr<const AsyncCallerContext>&)>;
+    using UploadPartCopyAsyncHandler = std::function<void(const AlibabaCloud::OSS::OssClient*, const UploadPartCopyRequest&, const UploadPartCopyOutcome&, const std::shared_ptr<const AsyncCallerContext>&)>;
+
+    /*Callable*/
+    using ListObjectOutcomeCallable = std::future<ListObjectOutcome>;
+    using GetObjectOutcomeCallable  = std::future<GetObjectOutcome>;
+    using PutObjectOutcomeCallable  = std::future<PutObjectOutcome>;
+    using UploadPartCopyOutcomeCallable = std::future<UploadPartCopyOutcome>;
+
+    class OssClientImpl;
+    class ALIBABACLOUD_OSS_EXPORT OssClient
+    {
+    public:
+
+        OssClient(const std::string& endpoint, const std::string& accessKeyId, const std::string& accessKeySecret, 
+                                const ClientConfiguration& configuration);
+        OssClient(const std::string& endpoint, const std::string& accessKeyId, const std::string& accessKeySecret, const std::string& securityToken,
+                                const ClientConfiguration& configuration); 
+        OssClient(const std::string& endpoint, const Credentials& credentials, const ClientConfiguration& configuration);
+        OssClient(const std::string& endpoint, const std::shared_ptr<CredentialsProvider>& credentialsProvider, const ClientConfiguration& configuration);
+        ~OssClient();
+
+        /*Service*/
+        ListBucketsOutcome ListBuckets() const;
+        ListBucketsOutcome ListBuckets(const ListBucketsRequest& request) const;
+
+        /*Bucket*/
+        CreateBucketOutcome CreateBucket(const std::string& bucket, StorageClass storageClass = StorageClass::Standard) const;
+        CreateBucketOutcome CreateBucket(const std::string& bucket, StorageClass storageClass, CannedAccessControlList acl) const;
+        CreateBucketOutcome CreateBucket(const CreateBucketRequest& request) const;
+
+        ListObjectOutcome ListObjects(const std::string& bucket) const;
+        ListObjectOutcome ListObjects(const std::string& bucket, const std::string& prefix) const;
+        ListObjectOutcome ListObjects(const ListObjectsRequest& request) const;
+        ListObjectVersionsOutcome ListObjectVersions(const std::string& bucket) const;
+        ListObjectVersionsOutcome ListObjectVersions(const std::string& bucket, const std::string& prefix) const;
+        ListObjectVersionsOutcome ListObjectVersions(const ListObjectVersionsRequest& request) const;
+
+        VoidOutcome SetBucketAcl(const std::string& bucket, CannedAccessControlList acl) const;
+        VoidOutcome SetBucketAcl(const SetBucketAclRequest& request) const;
+        VoidOutcome SetBucketLogging(const std::string& bucket, const std::string& targetBucket, const std::string& targetPrefix) const;
+        VoidOutcome SetBucketLogging(const SetBucketLoggingRequest& request) const;
+        VoidOutcome SetBucketWebsite(const std::string& bucket, const std::string& indexDocument) const;
+        VoidOutcome SetBucketWebsite(const std::string& bucket, const std::string& indexDocument, const std::string& errorDocument) const;
+        VoidOutcome SetBucketWebsite(const SetBucketWebsiteRequest& request) const;
+        VoidOutcome SetBucketReferer(const std::string& bucket, const RefererList& refererList, bool allowEmptyReferer) const;
+        VoidOutcome SetBucketReferer(const SetBucketRefererRequest& request) const;
+        VoidOutcome SetBucketLifecycle(const SetBucketLifecycleRequest& request) const;
+        VoidOutcome SetBucketCors(const std::string& bucket, const CORSRuleList& rules) const;
+        VoidOutcome SetBucketCors(const SetBucketCorsRequest& request) const;
+        VoidOutcome SetBucketStorageCapacity(const std::string& bucket, int64_t storageCapacity) const;
+        VoidOutcome SetBucketStorageCapacity(const SetBucketStorageCapacityRequest& request) const;
+        VoidOutcome SetBucketPolicy(const SetBucketPolicyRequest& request) const;
+        VoidOutcome SetBucketRequestPayment(const SetBucketRequestPaymentRequest& request) const;
+        VoidOutcome SetBucketEncryption(const SetBucketEncryptionRequest& request) const;
+        VoidOutcome SetBucketTagging(const SetBucketTaggingRequest& request) const;
+        VoidOutcome SetBucketQosInfo(const SetBucketQosInfoRequest& request) const;
+        VoidOutcome SetBucketVersioning(const SetBucketVersioningRequest& request) const;
+
+        VoidOutcome DeleteBucket(const std::string& bucket) const;
+        VoidOutcome DeleteBucket(const DeleteBucketRequest& request) const;
+        VoidOutcome DeleteBucketLogging(const std::string& bucket) const;
+        VoidOutcome DeleteBucketLogging(const DeleteBucketLoggingRequest& request) const;
+        VoidOutcome DeleteBucketPolicy(const DeleteBucketPolicyRequest& request) const;
+        VoidOutcome DeleteBucketWebsite(const std::string& bucket) const;
+        VoidOutcome DeleteBucketWebsite(const DeleteBucketWebsiteRequest& request) const;
+        VoidOutcome DeleteBucketLifecycle(const std::string& bucket) const;
+        VoidOutcome DeleteBucketLifecycle(const DeleteBucketLifecycleRequest& request) const;
+        VoidOutcome DeleteBucketCors(const std::string& bucket) const;
+        VoidOutcome DeleteBucketCors(const DeleteBucketCorsRequest& request) const;
+        VoidOutcome DeleteBucketEncryption(const DeleteBucketEncryptionRequest& request) const;
+        VoidOutcome DeleteBucketTagging(const DeleteBucketTaggingRequest& request) const;
+        VoidOutcome DeleteBucketQosInfo(const DeleteBucketQosInfoRequest& request) const;
+
+        GetBucketAclOutcome GetBucketAcl(const std::string& bucket) const;
+        GetBucketAclOutcome GetBucketAcl(const GetBucketAclRequest& request) const;
+        GetBucketLocationOutcome GetBucketLocation(const std::string& bucket) const;
+        GetBucketLocationOutcome GetBucketLocation(const GetBucketLocationRequest& request) const;
+        GetBucketInfoOutcome  GetBucketInfo(const std::string& bucket) const;
+        GetBucketInfoOutcome  GetBucketInfo(const GetBucketInfoRequest& request) const;
+        GetBucketLoggingOutcome GetBucketLogging(const std::string& bucket) const;
+        GetBucketLoggingOutcome GetBucketLogging(const GetBucketLoggingRequest& request) const;
+        GetBucketWebsiteOutcome GetBucketWebsite(const std::string& bucket) const;
+        GetBucketWebsiteOutcome GetBucketWebsite(const GetBucketWebsiteRequest& request) const;
+        GetBucketRefererOutcome GetBucketReferer(const std::string& bucket) const;
+        GetBucketRefererOutcome GetBucketReferer(const GetBucketRefererRequest& request) const;
+        GetBucketLifecycleOutcome GetBucketLifecycle(const std::string& bucket) const;
+        GetBucketLifecycleOutcome GetBucketLifecycle(const GetBucketLifecycleRequest& request) const;
+        GetBucketStatOutcome GetBucketStat(const std::string& bucket) const;
+        GetBucketStatOutcome GetBucketStat(const GetBucketStatRequest& request) const;
+        GetBucketCorsOutcome GetBucketCors(const std::string& bucket) const;
+        GetBucketCorsOutcome GetBucketCors(const GetBucketCorsRequest& request) const;
+        GetBucketStorageCapacityOutcome GetBucketStorageCapacity(const std::string& bucket) const;
+        GetBucketStorageCapacityOutcome GetBucketStorageCapacity(const GetBucketStorageCapacityRequest& request) const;
+        GetBucketPolicyOutcome GetBucketPolicy(const GetBucketPolicyRequest& request) const;
+        GetBucketPaymentOutcome GetBucketRequestPayment(const GetBucketRequestPaymentRequest& request) const;
+        GetBucketEncryptionOutcome GetBucketEncryption(const GetBucketEncryptionRequest& request) const;
+        GetBucketTaggingOutcome GetBucketTagging(const GetBucketTaggingRequest& request) const;
+        GetBucketQosInfoOutcome GetBucketQosInfo(const GetBucketQosInfoRequest& request) const;
+        GetUserQosInfoOutcome GetUserQosInfo(const GetUserQosInfoRequest& request) const;
+        GetBucketVersioningOutcome GetBucketVersioning(const GetBucketVersioningRequest& request) const;
+
+        /*Object*/
+        GetObjectOutcome GetObject(const std::string& bucket, const std::string& key) const;
+        GetObjectOutcome GetObject(const std::string& bucket, const std::string& key, const std::shared_ptr<std::iostream>& content) const;
+        GetObjectOutcome GetObject(const std::string& bucket, const std::string& key, const std::string& fileToSave) const;
+        GetObjectOutcome GetObject(const GetObjectRequest& request) const;
+        PutObjectOutcome PutObject(const std::string& bucket, const std::string& key, const std::shared_ptr<std::iostream>& content) const;
+        PutObjectOutcome PutObject(const std::string& bucket, const std::string& key, const std::string& fileToUpload) const;
+        PutObjectOutcome PutObject(const std::string& bucket, const std::string& key, const std::shared_ptr<std::iostream>& content, const ObjectMetaData& meta) const;
+        PutObjectOutcome PutObject(const std::string& bucket, const std::string& key, const std::string& fileToUpload, const ObjectMetaData& meta) const;
+        PutObjectOutcome PutObject(const PutObjectRequest& request) const;
+        DeleteObjectOutcome DeleteObject(const std::string& bucket, const std::string& key) const;
+        DeleteObjectOutcome DeleteObject(const DeleteObjectRequest& request) const;
+        DeleteObjecstOutcome DeleteObjects(const std::string bucket, const DeletedKeyList &keyList) const;
+        DeleteObjecstOutcome DeleteObjects(const DeleteObjectsRequest& request) const;
+        DeleteObjecVersionstOutcome DeleteObjectVersions(const std::string bucket, const ObjectIdentifierList &objectList) const;
+        DeleteObjecVersionstOutcome DeleteObjectVersions(const DeleteObjectVersionsRequest& request) const;
+        ObjectMetaDataOutcome HeadObject(const std::string& bucket, const std::string& key) const;
+        ObjectMetaDataOutcome HeadObject(const HeadObjectRequest& request) const;
+        ObjectMetaDataOutcome GetObjectMeta(const std::string& bucket, const std::string& key) const;
+        ObjectMetaDataOutcome GetObjectMeta(const GetObjectMetaRequest& request) const;
+        AppendObjectOutcome AppendObject(const AppendObjectRequest& request) const;
+        CopyObjectOutcome CopyObject(const CopyObjectRequest& request) const;
+        RestoreObjectOutcome RestoreObject(const std::string& bucket, const std::string& key) const;
+        RestoreObjectOutcome RestoreObject(const RestoreObjectRequest& request) const;
+        SetObjectAclOutcome SetObjectAcl(const SetObjectAclRequest& request) const;
+        GetObjectAclOutcome GetObjectAcl(const GetObjectAclRequest& request) const;
+        CreateSymlinkOutcome CreateSymlink(const CreateSymlinkRequest& request) const;
+        GetSymlinkOutcome GetSymlink(const GetSymlinkRequest& request) const;
+        GetObjectOutcome ProcessObject(const ProcessObjectRequest& request) const;
+
+        GetObjectOutcome SelectObject(const SelectObjectRequest& request) const;
+        CreateSelectObjectMetaOutcome CreateSelectObjectMeta(const CreateSelectObjectMetaRequest& request) const;
+
+        SetObjectTaggingOutcome SetObjectTagging(const SetObjectTaggingRequest& request) const;
+        DeleteObjectTaggingOutcome DeleteObjectTagging(const DeleteObjectTaggingRequest& request) const;
+        GetObjectTaggingOutcome GetObjectTagging(const GetObjectTaggingRequest& request) const;
+
+        /*MultipartUpload*/
+        InitiateMultipartUploadOutcome InitiateMultipartUpload(const InitiateMultipartUploadRequest& request) const;
+        PutObjectOutcome UploadPart(const UploadPartRequest& request) const;
+        UploadPartCopyOutcome UploadPartCopy(const UploadPartCopyRequest& request) const;
+        CompleteMultipartUploadOutcome CompleteMultipartUpload(const CompleteMultipartUploadRequest& request) const;
+        VoidOutcome AbortMultipartUpload(const AbortMultipartUploadRequest& request) const;
+        ListMultipartUploadsOutcome ListMultipartUploads(const ListMultipartUploadsRequest& request) const;
+        ListPartsOutcome ListParts(const ListPartsRequest& request) const;
+
+        /*Generate URL*/
+        StringOutcome GeneratePresignedUrl(const GeneratePresignedUrlRequest& request) const;
+        StringOutcome GeneratePresignedUrl(const std::string& bucket, const std::string& key) const;
+        StringOutcome GeneratePresignedUrl(const std::string& bucket, const std::string& key, int64_t expires) const;
+        StringOutcome GeneratePresignedUrl(const std::string& bucket, const std::string& key, int64_t expires, Http::Method method) const;
+        GetObjectOutcome GetObjectByUrl(const GetObjectByUrlRequest& request) const;
+        GetObjectOutcome GetObjectByUrl(const std::string& url) const;
+        GetObjectOutcome GetObjectByUrl(const std::string& url, const std::string& file) const;
+        PutObjectOutcome PutObjectByUrl(const PutObjectByUrlRequest& request) const;
+        PutObjectOutcome PutObjectByUrl(const std::string& url, const std::string& file) const;
+        PutObjectOutcome PutObjectByUrl(const std::string& url, const std::string& file, const ObjectMetaData& metaData) const;
+        PutObjectOutcome PutObjectByUrl(const std::string& url, const std::shared_ptr<std::iostream>& content) const;
+        PutObjectOutcome PutObjectByUrl(const std::string& url, const std::shared_ptr<std::iostream>& content, const ObjectMetaData& metaData) const;
+
+        /*Generate Post Policy*/
+
+        /*Resumable Operation*/
+        PutObjectOutcome ResumableUploadObject(const UploadObjectRequest& request) const;
+        CopyObjectOutcome ResumableCopyObject(const MultiCopyObjectRequest& request) const;
+        GetObjectOutcome ResumableDownloadObject(const DownloadObjectRequest& request) const;
+
+        /*Live Channel*/
+        VoidOutcome PutLiveChannelStatus(const PutLiveChannelStatusRequest& request) const;
+        PutLiveChannelOutcome PutLiveChannel(const PutLiveChannelRequest& request) const;
+        VoidOutcome PostVodPlaylist(const PostVodPlaylistRequest& request) const;
+        GetVodPlaylistOutcome GetVodPlaylist(const GetVodPlaylistRequest& request) const;
+        GetLiveChannelStatOutcome GetLiveChannelStat(const GetLiveChannelStatRequest& request) const;
+        GetLiveChannelInfoOutcome GetLiveChannelInfo(const GetLiveChannelInfoRequest& request) const;
+        GetLiveChannelHistoryOutcome GetLiveChannelHistory(const GetLiveChannelHistoryRequest& request) const;
+        ListLiveChannelOutcome ListLiveChannel(const ListLiveChannelRequest& request) const;
+        VoidOutcome DeleteLiveChannel(const DeleteLiveChannelRequest& request) const;
+        StringOutcome GenerateRTMPSignedUrl(const GenerateRTMPSignedUrlRequest& request) const;
+        
+        /*Aysnc APIs*/
+        void ListObjectsAsync(const ListObjectsRequest& request, const ListObjectAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+        void GetObjectAsync(const GetObjectRequest& request, const GetObjectAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+        void PutObjectAsync(const PutObjectRequest& request, const PutObjectAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+        void UploadPartAsync(const UploadPartRequest& request, const UploadPartAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+        void UploadPartCopyAsync(const UploadPartCopyRequest& request, const UploadPartCopyAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+
+        /*Callable APIs*/
+        ListObjectOutcomeCallable ListObjectsCallable(const ListObjectsRequest& request) const;
+        GetObjectOutcomeCallable GetObjectCallable(const GetObjectRequest& request) const;
+        PutObjectOutcomeCallable PutObjectCallable(const PutObjectRequest& request) const;
+        PutObjectOutcomeCallable UploadPartCallable(const UploadPartRequest& request) const;
+        UploadPartCopyOutcomeCallable UploadPartCopyCallable(const UploadPartCopyRequest& request) const;
+
+        /*Extended APIs*/
+        bool DoesBucketExist(const std::string& bucket) const;
+        bool DoesObjectExist(const std::string& bucket, const std::string& key) const;
+        CopyObjectOutcome ModifyObjectMeta(const std::string& bucket, const std::string& key, const ObjectMetaData& meta);
+
+        /*Requests control*/
+        void DisableRequest();
+        void EnableRequest();
+    private:
+        std::shared_ptr<OssClientImpl> client_;
+    };
+}
+}

+ 86 - 0
include/alibabacloud/oss/OssError.h

@@ -0,0 +1,86 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#include <string>
+#include <alibabacloud/oss/Export.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT OssError
+    {
+    public:
+        OssError() = default;
+        OssError(const std::string& code, const std::string& message) :
+            code_(code),
+            message_(message)
+        {
+        }
+        OssError(const OssError& rhs) :
+            code_(rhs.code_),
+            message_(rhs.message_),
+            requestId_(rhs.requestId_),
+            host_(rhs.host_)
+        {
+        }
+        OssError(OssError&& lhs) :
+            code_(std::move(lhs.code_)),
+            message_(std::move(lhs.message_)),
+            requestId_(std::move(lhs.requestId_)),
+            host_(std::move(lhs.host_))
+        {
+        }
+        OssError& operator=(OssError&& lhs)
+        {
+            code_ = std::move(lhs.code_);
+            message_ = std::move(lhs.message_);
+            requestId_ = std::move(lhs.requestId_);
+            host_ = std::move(lhs.host_);
+            return *this;
+        }
+        OssError& operator=(const OssError& rhs)
+        {
+            code_ = rhs.code_;
+            message_ = rhs.message_;
+            requestId_ = rhs.requestId_;
+            host_ = rhs.host_;
+            return *this;
+        }
+
+        ~OssError() = default;
+        const std::string& Code()const { return code_; }
+        const std::string& Message() const { return message_; }
+        const std::string& RequestId() const { return requestId_; }
+        const std::string& Host() const { return host_; }
+        void setCode(const std::string& value) { code_ = value; }
+        void setCode(const char *value) { code_ = value; }
+        void setMessage(const std::string& value) { message_ = value; }
+        void setMessage(const char *value) { message_ = value; }
+        void setRequestId(const std::string& value) { requestId_ = value; }
+        void setRequestId(const char *value) { requestId_ = value; }
+        void setHost(const std::string& value) { host_ = value; }
+        void setHost(const char *value) { host_ = value; }
+    private:
+        std::string code_;
+        std::string message_;
+        std::string requestId_;
+        std::string host_;
+    };
+}
+}

+ 228 - 0
include/alibabacloud/oss/OssFwd.h

@@ -0,0 +1,228 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#include <memory>
+#include <iostream>
+#include <alibabacloud/oss/Global.h>
+#include <alibabacloud/oss/Types.h>
+#include <alibabacloud/oss/OssError.h>
+#include <alibabacloud/oss/ServiceResult.h>
+#include <alibabacloud/oss/utils/Outcome.h>
+#include <alibabacloud/oss/model/VoidResult.h>
+#include <alibabacloud/oss/model/ListBucketsRequest.h>
+#include <alibabacloud/oss/model/ListBucketsResult.h>
+#include <alibabacloud/oss/model/CreateBucketRequest.h>
+#include <alibabacloud/oss/model/SetBucketAclRequest.h>
+#include <alibabacloud/oss/model/SetBucketLoggingRequest.h>
+#include <alibabacloud/oss/model/SetBucketWebsiteRequest.h>
+#include <alibabacloud/oss/model/SetBucketRefererRequest.h>
+#include <alibabacloud/oss/model/SetBucketLifecycleRequest.h>
+#include <alibabacloud/oss/model/SetBucketCorsRequest.h>
+#include <alibabacloud/oss/model/SetBucketStorageCapacityRequest.h>
+#include <alibabacloud/oss/model/DeleteBucketRequest.h>
+#include <alibabacloud/oss/model/DeleteBucketLoggingRequest.h>
+#include <alibabacloud/oss/model/DeleteBucketWebsiteRequest.h>
+#include <alibabacloud/oss/model/DeleteBucketLifecycleRequest.h>
+#include <alibabacloud/oss/model/DeleteBucketCorsRequest.h>
+#include <alibabacloud/oss/model/ListObjectsRequest.h>
+#include <alibabacloud/oss/model/ListObjectsResult.h>
+#include <alibabacloud/oss/model/GetBucketAclRequest.h>
+#include <alibabacloud/oss/model/GetBucketAclResult.h>
+#include <alibabacloud/oss/model/GetBucketLocationRequest.h>
+#include <alibabacloud/oss/model/GetBucketLocationResult.h>
+#include <alibabacloud/oss/model/GetBucketInfoRequest.h>
+#include <alibabacloud/oss/model/GetBucketInfoResult.h>
+#include <alibabacloud/oss/model/GetBucketLoggingRequest.h>
+#include <alibabacloud/oss/model/GetBucketLoggingResult.h>
+#include <alibabacloud/oss/model/GetBucketWebsiteRequest.h>
+#include <alibabacloud/oss/model/GetBucketWebsiteResult.h>
+#include <alibabacloud/oss/model/GetBucketRefererRequest.h>
+#include <alibabacloud/oss/model/GetBucketRefererResult.h>
+#include <alibabacloud/oss/model/GetBucketLifecycleRequest.h>
+#include <alibabacloud/oss/model/GetBucketLifecycleResult.h>
+#include <alibabacloud/oss/model/GetBucketStatRequest.h>
+#include <alibabacloud/oss/model/GetBucketStatResult.h>
+#include <alibabacloud/oss/model/GetBucketCorsRequest.h>
+#include <alibabacloud/oss/model/GetBucketCorsResult.h>
+#include <alibabacloud/oss/model/GetBucketStorageCapacityRequest.h>
+#include <alibabacloud/oss/model/GetBucketStorageCapacityResult.h>
+#include <alibabacloud/oss/model/GetObjectRequest.h>
+#include <alibabacloud/oss/model/GetObjectResult.h>
+#include <alibabacloud/oss/model/PutObjectRequest.h>
+#include <alibabacloud/oss/model/PutObjectResult.h>
+#include <alibabacloud/oss/model/DeleteObjectRequest.h>
+#include <alibabacloud/oss/model/DeleteObjectResult.h>
+#include <alibabacloud/oss/model/DeleteObjectsRequest.h>
+#include <alibabacloud/oss/model/DeleteObjectsResult.h>
+#include <alibabacloud/oss/model/HeadObjectRequest.h>
+#include <alibabacloud/oss/model/GetObjectMetaRequest.h>
+#include <alibabacloud/oss/model/GeneratePresignedUrlRequest.h>
+#include <alibabacloud/oss/model/GetObjectByUrlRequest.h>
+#include <alibabacloud/oss/model/PutObjectByUrlRequest.h>
+#include <alibabacloud/oss/model/GetObjectAclRequest.h>
+#include <alibabacloud/oss/model/GetObjectAclResult.h>
+#include <alibabacloud/oss/model/AppendObjectRequest.h>
+#include <alibabacloud/oss/model/AppendObjectResult.h>
+#include <alibabacloud/oss/model/CopyObjectRequest.h>
+#include <alibabacloud/oss/model/CopyObjectResult.h>
+#include <alibabacloud/oss/model/GetSymlinkRequest.h>
+#include <alibabacloud/oss/model/GetSymlinkResult.h>
+#include <alibabacloud/oss/model/RestoreObjectRequest.h>
+#include <alibabacloud/oss/model/RestoreObjectResult.h>
+#include <alibabacloud/oss/model/CreateSymlinkRequest.h>
+#include <alibabacloud/oss/model/CreateSymlinkResult.h>
+#include <alibabacloud/oss/model/SetObjectAclRequest.h>
+#include <alibabacloud/oss/model/SetObjectAclResult.h>
+#include <alibabacloud/oss/model/ProcessObjectRequest.h>
+#include <alibabacloud/oss/model/InitiateMultipartUploadRequest.h>
+#include <alibabacloud/oss/model/InitiateMultipartUploadResult.h>
+#include <alibabacloud/oss/model/UploadPartRequest.h>
+#include <alibabacloud/oss/model/UploadPartCopyRequest.h>
+#include <alibabacloud/oss/model/UploadPartCopyResult.h>
+#include <alibabacloud/oss/model/CompleteMultipartUploadRequest.h>
+#include <alibabacloud/oss/model/CompleteMultipartUploadResult.h>
+#include <alibabacloud/oss/model/AbortMultipartUploadRequest.h>
+#include <alibabacloud/oss/model/ListMultipartUploadsRequest.h>
+#include <alibabacloud/oss/model/ListMultipartUploadsResult.h>
+#include <alibabacloud/oss/model/ListPartsRequest.h>
+#include <alibabacloud/oss/model/ListPartsResult.h>
+#include <alibabacloud/oss/model/UploadObjectRequest.h>
+#include <alibabacloud/oss/model/MultiCopyObjectRequest.h>
+#include <alibabacloud/oss/model/DownloadObjectRequest.h>
+#include <alibabacloud/oss/model/PutLiveChannelStatusRequest.h>
+#include <alibabacloud/oss/model/PutLiveChannelRequest.h>
+#include <alibabacloud/oss/model/PutLiveChannelResult.h>
+#include <alibabacloud/oss/model/PostVodPlaylistRequest.h>
+#include <alibabacloud/oss/model/GetVodPlaylistRequest.h>
+#include <alibabacloud/oss/model/GetVodPlaylistResult.h>
+#include <alibabacloud/oss/model/GetLiveChannelStatRequest.h>
+#include <alibabacloud/oss/model/GetLiveChannelStatResult.h>
+#include <alibabacloud/oss/model/GetLiveChannelInfoRequest.h>
+#include <alibabacloud/oss/model/GetLiveChannelInfoResult.h>
+#include <alibabacloud/oss/model/GetLiveChannelHistoryRequest.h>
+#include <alibabacloud/oss/model/GetLiveChannelHistoryResult.h>
+#include <alibabacloud/oss/model/ListLiveChannelRequest.h>
+#include <alibabacloud/oss/model/ListLiveChannelResult.h>
+#include <alibabacloud/oss/model/DeleteLiveChannelRequest.h>
+#include <alibabacloud/oss/model/GenerateRTMPSignedUrlRequest.h>
+#include <alibabacloud/oss/model/ObjectCallbackBuilder.h>
+#include <alibabacloud/oss/model/SelectObjectRequest.h>
+#include <alibabacloud/oss/model/CreateSelectObjectMetaRequest.h>
+#include <alibabacloud/oss/model/CreateSelectObjectMetaResult.h>
+#include <alibabacloud/oss/model/SetObjectTaggingRequest.h>
+#include <alibabacloud/oss/model/SetObjectTaggingResult.h>
+#include <alibabacloud/oss/model/GetObjectTaggingRequest.h>
+#include <alibabacloud/oss/model/GetObjectTaggingResult.h>
+#include <alibabacloud/oss/model/DeleteObjectTaggingRequest.h>
+#include <alibabacloud/oss/model/DeleteObjectTaggingResult.h>
+#include <alibabacloud/oss/model/SetBucketPolicyRequest.h>
+#include <alibabacloud/oss/model/GetBucketPolicyRequest.h>
+#include <alibabacloud/oss/model/GetBucketPolicyResult.h>
+#include <alibabacloud/oss/model/DeleteBucketPolicyRequest.h>
+#include <alibabacloud/oss/model/SetBucketPaymentRequest.h>
+#include <alibabacloud/oss/model/GetBucketPaymentRequest.h>
+#include <alibabacloud/oss/model/GetBucketPaymentResult.h>
+#include <alibabacloud/oss/model/SetBucketEncryptionRequest.h>
+#include <alibabacloud/oss/model/DeleteBucketEncryptionRequest.h>
+#include <alibabacloud/oss/model/GetBucketEncryptionRequest.h>
+#include <alibabacloud/oss/model/GetBucketEncryptionResult.h>
+#include <alibabacloud/oss/model/SetBucketTaggingRequest.h>
+#include <alibabacloud/oss/model/GetBucketTaggingRequest.h>
+#include <alibabacloud/oss/model/GetBucketTaggingResult.h>
+#include <alibabacloud/oss/model/DeleteBucketTaggingRequest.h>
+#include <alibabacloud/oss/model/SetBucketQosInfoRequest.h>
+#include <alibabacloud/oss/model/DeleteBucketQosInfoRequest.h>
+#include <alibabacloud/oss/model/GetBucketQosInfoRequest.h>
+#include <alibabacloud/oss/model/GetBucketQosInfoResult.h>
+#include <alibabacloud/oss/model/GetUserQosInfoRequest.h>
+#include <alibabacloud/oss/model/GetUserQosInfoResult.h>
+#include <alibabacloud/oss/model/SetBucketVersioningRequest.h>
+#include <alibabacloud/oss/model/GetBucketVersioningRequest.h>
+#include <alibabacloud/oss/model/GetBucketVersioningResult.h>
+#include <alibabacloud/oss/model/ListObjectVersionsRequest.h>
+#include <alibabacloud/oss/model/ListObjectVersionsResult.h>
+#include <alibabacloud/oss/model/DeleteObjectVersionsRequest.h>
+#include <alibabacloud/oss/model/DeleteObjectVersionsResult.h>
+#include <alibabacloud/oss/Types.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    using OssOutcome = Outcome<OssError, ServiceResult>;
+    using VoidOutcome = Outcome<OssError, VoidResult>;
+    using StringOutcome = Outcome<OssError, std::string>;
+
+    using ListBucketsOutcome = Outcome<OssError, ListBucketsResult>;
+    using CreateBucketOutcome = Outcome<OssError, Bucket>;
+    using ListObjectOutcome = Outcome<OssError, ListObjectsResult>;
+    using ListObjectVersionsOutcome = Outcome<OssError, ListObjectVersionsResult>;
+
+    using GetBucketAclOutcome = Outcome<OssError, GetBucketAclResult>;
+    using GetBucketLocationOutcome = Outcome<OssError, GetBucketLocationResult>;
+    using GetBucketInfoOutcome = Outcome<OssError, GetBucketInfoResult>;
+    using GetBucketLoggingOutcome = Outcome<OssError, GetBucketLoggingResult>;
+    using GetBucketWebsiteOutcome = Outcome<OssError, GetBucketWebsiteResult>;
+    using GetBucketRefererOutcome = Outcome<OssError, GetBucketRefererResult>;
+    using GetBucketLifecycleOutcome = Outcome<OssError, GetBucketLifecycleResult>;
+    using GetBucketStatOutcome = Outcome<OssError, GetBucketStatResult>;
+    using GetBucketCorsOutcome = Outcome<OssError, GetBucketCorsResult>;
+    using GetBucketStorageCapacityOutcome = Outcome<OssError, GetBucketStorageCapacityResult>;
+    using GetBucketPolicyOutcome = Outcome<OssError, GetBucketPolicyResult>;
+    using GetBucketPaymentOutcome = Outcome<OssError, GetBucketPaymentResult>;
+    using GetBucketEncryptionOutcome = Outcome<OssError, GetBucketEncryptionResult>;
+    using GetBucketTaggingOutcome = Outcome<OssError, GetBucketTaggingResult>;
+    using GetBucketQosInfoOutcome = Outcome<OssError, GetBucketQosInfoResult>;
+    using GetUserQosInfoOutcome = Outcome<OssError, GetUserQosInfoResult>;
+    using GetBucketVersioningOutcome = Outcome<OssError, GetBucketVersioningResult>;
+
+    using GetObjectOutcome = Outcome<OssError, GetObjectResult>;
+    using PutObjectOutcome = Outcome<OssError, PutObjectResult>;
+    using DeleteObjectOutcome = Outcome<OssError, DeleteObjectResult>;
+    using DeleteObjecstOutcome = Outcome<OssError, DeleteObjectsResult>;
+    using DeleteObjecVersionstOutcome = Outcome<OssError, DeleteObjectVersionsResult>;
+    using ObjectMetaDataOutcome = Outcome<OssError, ObjectMetaData>;
+
+    using GetObjectAclOutcome = Outcome<OssError, GetObjectAclResult>;
+    using SetObjectAclOutcome = Outcome<OssError, SetObjectAclResult>;
+    using AppendObjectOutcome = Outcome<OssError, AppendObjectResult>;
+    using CopyObjectOutcome = Outcome<OssError, CopyObjectResult>;
+    using RestoreObjectOutcome = Outcome<OssError, RestoreObjectResult>;
+    using GetSymlinkOutcome = Outcome<OssError, GetSymlinkResult>;
+    using CreateSymlinkOutcome = Outcome<OssError, CreateSymlinkResult>;
+    using CreateSelectObjectMetaOutcome = Outcome<OssError, CreateSelectObjectMetaResult>;
+    using SetObjectTaggingOutcome = Outcome<OssError, SetObjectTaggingResult>;
+    using GetObjectTaggingOutcome = Outcome<OssError, GetObjectTaggingResult>;
+    using DeleteObjectTaggingOutcome = Outcome<OssError, DeleteObjectTaggingResult>;
+
+    /*multipart*/
+    using InitiateMultipartUploadOutcome = Outcome<OssError, InitiateMultipartUploadResult>;
+    using UploadPartCopyOutcome = Outcome<OssError, UploadPartCopyResult>;
+    using CompleteMultipartUploadOutcome = Outcome<OssError, CompleteMultipartUploadResult>;
+    using ListMultipartUploadsOutcome = Outcome<OssError, ListMultipartUploadsResult>;
+    using ListPartsOutcome = Outcome<OssError, ListPartsResult>;
+
+    /*livechannel*/
+    using PutLiveChannelOutcome = Outcome<OssError, PutLiveChannelResult>;
+    using GetLiveChannelStatOutcome = Outcome<OssError, GetLiveChannelStatResult>;
+    using GetLiveChannelInfoOutcome = Outcome<OssError, GetLiveChannelInfoResult>;
+    using GetLiveChannelHistoryOutcome = Outcome<OssError, GetLiveChannelHistoryResult>;
+    using ListLiveChannelOutcome = Outcome<OssError, ListLiveChannelResult>;
+    using GetVodPlaylistOutcome = Outcome<OssError, GetVodPlaylistResult>;
+}
+}

+ 188 - 0
include/alibabacloud/oss/OssRequest.h

@@ -0,0 +1,188 @@
+/*
+* 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.
+*/
+
+#pragma once
+
+#include <string>
+#include <alibabacloud/oss/ServiceRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class OssClientImpl;
+    class  ALIBABACLOUD_OSS_EXPORT OssRequest : public ServiceRequest
+    {
+    public:
+        OssRequest();
+        virtual ~ OssRequest() = default;
+        virtual HeaderCollection Headers() const;
+        virtual ParameterCollection Parameters() const;
+        virtual std::shared_ptr<std::iostream> Body() const;
+    protected:
+        OssRequest(const std::string& bucket, const std::string& key);
+        friend class OssClientImpl;
+
+        virtual int validate() const;
+        const char *validateMessage(int code) const;
+        
+        virtual std::string payload() const;
+        virtual HeaderCollection specialHeaders() const;
+        virtual ParameterCollection specialParameters() const;
+        
+        const std::string& bucket() const;
+        const std::string& key()  const;
+    protected:
+        std::string bucket_;
+        std::string key_;
+    };
+
+    class ALIBABACLOUD_OSS_EXPORT OssBucketRequest : public OssRequest
+    {
+    public:
+        OssBucketRequest(const std::string& bucket):
+            OssRequest(bucket, "")
+        {}
+        void setBucket(const std::string& bucket);
+        const std::string& Bucket() const;
+    protected:
+        virtual int validate() const;
+    };
+
+    class ALIBABACLOUD_OSS_EXPORT OssObjectRequest : public OssRequest
+    {
+    public:
+        OssObjectRequest(const std::string& bucket, const std::string& key) :
+            OssRequest(bucket, key),
+            requestPayer_(RequestPayer::NotSet),
+            versionId_()
+        {}
+        void setBucket(const std::string& bucket);
+        const std::string& Bucket() const;
+
+        void setKey(const std::string& key);
+        const std::string& Key() const;
+
+        void setRequestPayer(RequestPayer value);
+
+        void setVersionId(const std::string& versionId);
+        const std::string& VersionId() const;
+    protected:
+        virtual int validate() const;
+        virtual HeaderCollection specialHeaders() const;
+        virtual ParameterCollection specialParameters() const;
+        RequestPayer requestPayer_;
+        std::string versionId_;
+    };
+
+    class ALIBABACLOUD_OSS_EXPORT OssResumableBaseRequest : public OssRequest
+    {
+    public:
+        OssResumableBaseRequest(const std::string& bucket, const std::string& key,
+            const std::string& checkpointDir, const uint64_t partSize, const uint32_t threadNum) :
+            OssRequest(bucket, key), 
+            partSize_(partSize),
+            checkpointDir_(checkpointDir),
+            requestPayer_(AlibabaCloud::OSS::RequestPayer::NotSet),
+            trafficLimit_(0),
+            versionId_()
+        {
+            threadNum_ = threadNum == 0 ? 1 : threadNum;
+        }
+
+        OssResumableBaseRequest(const std::string& bucket, const std::string& key,
+            const std::wstring& checkpointDir, const uint64_t partSize, const uint32_t threadNum) :
+            OssRequest(bucket, key),
+            partSize_(partSize),
+            checkpointDirW_(checkpointDir),
+            requestPayer_(AlibabaCloud::OSS::RequestPayer::NotSet),
+            trafficLimit_(0),
+            versionId_()
+        {
+            threadNum_ = threadNum == 0 ? 1 : threadNum;
+        }
+
+        void setBucket(const std::string& bucket);
+        const std::string& Bucket() const;
+
+        void setKey(const std::string& key);
+        const std::string& Key() const;
+        
+        void setPartSize(uint64_t partSize);
+        uint64_t PartSize() const;
+
+        void setObjectSize(uint64_t objectSize);
+        uint64_t ObjectSize() const;
+        
+        void setThreadNum(uint32_t threadNum);
+        uint32_t ThreadNum() const;
+
+        void setCheckpointDir(const std::string& checkpointDir);
+        const std::string& CheckpointDir() const;
+
+        void setCheckpointDir(const std::wstring& checkpointDir);
+        const std::wstring& CheckpointDirW() const;
+
+        bool hasCheckpointDir() const;
+
+        void setObjectMtime(const std::string& mtime);
+        const std::string& ObjectMtime() const;
+
+        void setRequestPayer(RequestPayer value);
+        AlibabaCloud::OSS::RequestPayer RequestPayer() const;
+		
+        void setTrafficLimit(uint64_t value);
+        uint64_t TrafficLimit() const;
+
+        void setVersionId(const std::string& versionId);
+        const std::string& VersionId() const;
+
+    protected:
+        friend class OssClientImpl;
+        virtual int validate() const;
+        const char *validateMessage(int code) const;
+
+    protected:
+        uint64_t partSize_;
+        uint64_t objectSize_;
+        uint32_t threadNum_;
+        std::string checkpointDir_;
+        std::wstring checkpointDirW_;
+        std::string mtime_;
+        AlibabaCloud::OSS::RequestPayer requestPayer_;
+        uint64_t trafficLimit_;
+        std::string versionId_;
+    };
+
+    class ALIBABACLOUD_OSS_EXPORT LiveChannelRequest : public OssRequest
+    {
+    public:
+        LiveChannelRequest(const std::string &bucket, const std::string &channelName) :
+            OssRequest(bucket, channelName),
+            channelName_(channelName)
+        {}
+        void setBucket(const std::string &bucket);
+        const std::string& Bucket() const;
+
+        void setChannelName(const std::string &channelName);
+        const std::string& ChannelName() const;
+    protected:
+        virtual int validate() const;
+    protected:
+        std::string channelName_;
+    };
+}
+}

+ 37 - 0
include/alibabacloud/oss/OssResponse.h

@@ -0,0 +1,37 @@
+/*
+* 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.
+*/
+
+#pragma once
+
+#include <string>
+#include <alibabacloud/oss/Export.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT OssResponse
+    {
+    public:
+        OssResponse();
+        explicit OssResponse(const std::string& payload);
+        ~OssResponse();
+        std::string payload()const;
+    private:
+        std::string payload_;
+    };
+}
+}

+ 56 - 0
include/alibabacloud/oss/OssResult.h

@@ -0,0 +1,56 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/Types.h>
+#include <string>
+#include <vector>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    using CommonPrefixeList = std::vector<std::string>;
+
+    class OssClientImpl;
+    class ALIBABACLOUD_OSS_EXPORT OssResult
+    {
+    public:
+        OssResult();
+        OssResult(const HeaderCollection& value);
+        virtual ~OssResult() {};
+        const std::string& RequestId() const {return requestId_;}
+    protected:
+        friend class OssClientImpl;
+        bool ParseDone() { return parseDone_; };
+        bool parseDone_;
+        std::string requestId_;
+    };
+
+    class ALIBABACLOUD_OSS_EXPORT OssObjectResult : public OssResult
+    {
+    public:
+        OssObjectResult();
+        OssObjectResult(const HeaderCollection& value);
+        virtual ~OssObjectResult() {};
+        const std::string& VersionId() const { return versionId_; }
+    protected:
+        std::string versionId_;
+    };
+}
+}

+ 61 - 0
include/alibabacloud/oss/ServiceRequest.h

@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#include <memory>
+#include <iostream>
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/Types.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    const int REQUEST_FLAG_CONTENTMD5    = (1 << 0);
+    const int REQUEST_FLAG_PARAM_IN_PATH = (1 << 1);
+    const int REQUEST_FLAG_CHECK_CRC64   = (1 << 2);
+    const int REQUEST_FLAG_SAVE_CLIENT_CRC64 = (1 << 3);
+
+    class ALIBABACLOUD_OSS_EXPORT ServiceRequest
+    {
+    public:
+        virtual ~ServiceRequest() = default;
+
+        std::string Path() const;
+        virtual HeaderCollection Headers() const = 0;
+        virtual ParameterCollection Parameters() const = 0;
+        virtual std::shared_ptr<std::iostream> Body() const = 0;
+
+        int Flags() const;
+        void setFlags(int flags);
+
+        const IOStreamFactory& ResponseStreamFactory() const;
+        void setResponseStreamFactory(const IOStreamFactory& factory);
+        
+        const AlibabaCloud::OSS::TransferProgress& TransferProgress() const;
+        void setTransferProgress(const AlibabaCloud::OSS::TransferProgress& arg);
+    protected:
+        ServiceRequest();
+        void setPath(const std::string &path);
+    private:
+        int flags_;
+        std::string path_;
+        IOStreamFactory responseStreamFactory_;
+        AlibabaCloud::OSS::TransferProgress transferProgress_;
+    };
+}
+}

+ 49 - 0
include/alibabacloud/oss/ServiceResult.h

@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#include <string>
+#include <memory>
+#include <iostream>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class  ServiceResult
+    {
+    public:
+        ServiceResult() {}
+        virtual ~ServiceResult() {};
+
+        inline const std::string& RequestId() const {return requestId_;}
+        inline const std::shared_ptr<std::iostream>& payload() const {return payload_;}
+        inline const HeaderCollection& headerCollection() const {return headerCollection_;}
+        inline int responseCode() const {return responseCode_;}
+
+        void setRequestId(const std::string& requestId) {requestId_ = requestId;}
+        void setPlayload(const std::shared_ptr<std::iostream>& payload) {payload_ = payload;}
+        void setHeaderCollection(const HeaderCollection& values) { headerCollection_ = values;}
+        void setResponseCode(const int code) { responseCode_ = code;} 
+    private:
+        std::string requestId_;
+        std::shared_ptr<std::iostream> payload_;
+        HeaderCollection headerCollection_;
+        int responseCode_;
+    };
+}
+}

+ 166 - 0
include/alibabacloud/oss/Types.h

@@ -0,0 +1,166 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#include <cstdint> 
+#include <vector>
+#include <string>
+#include <map>
+#include <memory>
+#include <functional>
+#include <alibabacloud/oss/Export.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    enum StorageClass
+    {
+        Standard, // Standard bucket
+        IA,       // Infrequent Access bucket
+        Archive   // Archive bucket
+    };
+
+    enum CannedAccessControlList
+    {
+        Private = 0,
+        PublicRead,
+        PublicReadWrite,
+        Default
+    };
+
+    enum CopyActionList
+    {
+        Copy = 0,
+        Replace
+    };
+
+    enum EncodingType {
+        STRING_ANY,
+        URL,
+    };
+
+    enum RequestResponseHeader {
+        ContentType,
+        ContentLanguage,
+        Expires,
+        CacheControl,
+        ContentDisposition,
+        ContentEncoding,
+    };
+
+    enum RuleStatus
+    {
+        Enabled,
+        Disabled
+    };
+
+    enum LogLevel
+    {
+        LogOff = 0,
+        LogFatal,
+        LogError,
+        LogWarn,
+        LogInfo,
+        LogDebug,
+        LogTrace,
+        LogAll,
+    };
+
+    enum LiveChannelStatus
+    {
+        EnabledStatus,
+        DisabledStatus,
+        IdleStatus,
+        LiveStatus,
+        UnknownStatus=99
+    };
+
+
+    enum class RequestPayer
+    {
+        NotSet = 0,
+        BucketOwner,
+        Requester
+    };
+
+    enum class SSEAlgorithm
+    {
+        NotSet = 0,
+        KMS,
+        AES256
+    };
+
+    enum class DataRedundancyType
+    {
+        NotSet = 0,
+        LRS,
+        ZRS
+    };
+
+    enum class VersioningStatus
+    {
+        NotSet,
+        Enabled,
+        Suspended
+    };
+
+    typedef void(*LogCallback)(LogLevel level, const std::string& stream);
+
+    struct  ALIBABACLOUD_OSS_EXPORT caseSensitiveLess
+    {
+        bool operator() (const std::string& lhs, const std::string& rhs) const
+        {
+            return lhs < rhs;
+        }
+    };
+
+    struct  ALIBABACLOUD_OSS_EXPORT caseInsensitiveLess
+    {
+        bool operator() (const std::string& lhs, const std::string& rhs) const
+        {
+            auto first1 = lhs.begin(), last1 = lhs.end();
+            auto first2 = rhs.begin(), last2 = rhs.end();
+            while (first1 != last1) {
+                if (first2 == last2)
+                    return false;
+                auto first1_ch = ::tolower(*first1);
+                auto first2_ch = ::tolower(*first2);
+                if (first1_ch != first2_ch) {
+                    return (first1_ch < first2_ch);
+                }
+                ++first1; ++first2;
+            }
+            return (first2 != last2);
+        }
+    };
+
+    using TransferProgressHandler = std::function<void(size_t increment, int64_t transferred, int64_t total, void *userData)>;
+    struct  ALIBABACLOUD_OSS_EXPORT TransferProgress
+    {
+        TransferProgressHandler Handler;
+        void *UserData;
+    };
+
+    using RefererList = std::vector<std::string>;
+    using MetaData = std::map<std::string, std::string, caseInsensitiveLess>;
+    using HeaderCollection = std::map<std::string, std::string, caseInsensitiveLess>;
+    using ParameterCollection = std::map<std::string, std::string, caseSensitiveLess>;
+    using IOStreamFactory = std::function< std::shared_ptr<std::iostream>(void)>;
+
+}
+}

+ 43 - 0
include/alibabacloud/oss/auth/Credentials.h

@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <string>
+#include <alibabacloud/oss/Export.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT Credentials
+    {
+        public:
+            Credentials(const std::string& accessKeyId, const std::string& accessKeySecret,
+                const std::string& sessionToken="");
+            ~Credentials();
+            const std::string& AccessKeyId () const;
+            const std::string& AccessKeySecret () const;
+            const std::string& SessionToken () const;
+            void setAccessKeyId(const std::string& accessKeyId);
+            void setAccessKeySecret(const std::string& accessKeySecret);
+            void setSessionToken (const std::string& sessionToken);
+        private:
+            std::string accessKeyId_;
+            std::string accessKeySecret_;
+            std::string sessionToken_;
+    };
+}
+}

+ 34 - 0
include/alibabacloud/oss/auth/CredentialsProvider.h

@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include "Credentials.h"
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT CredentialsProvider
+    {
+    public:
+        CredentialsProvider() = default;
+        virtual ~CredentialsProvider() = default;
+        virtual Credentials getCredentials() = 0;
+    private:
+
+    };
+}
+}

+ 38 - 0
include/alibabacloud/oss/client/AsyncCallerContext.h

@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <string>
+#include <alibabacloud/oss/Export.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT AsyncCallerContext
+    {
+    public:
+        AsyncCallerContext();
+        explicit AsyncCallerContext(const std::string &uuid);
+        virtual ~AsyncCallerContext();
+        
+        const std::string &Uuid()const;
+        void setUuid(const std::string &uuid);
+    private:
+        std::string uuid_;
+    };
+}
+}

+ 117 - 0
include/alibabacloud/oss/client/ClientConfiguration.h

@@ -0,0 +1,117 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <memory>
+#include <string>
+#include <alibabacloud/oss/auth/CredentialsProvider.h>
+#include <alibabacloud/oss/http/HttpType.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class RetryStrategy;
+    class RateLimiter;
+    class ALIBABACLOUD_OSS_EXPORT ClientConfiguration
+    {
+    public:
+        ClientConfiguration();
+        ~ClientConfiguration() = default;
+    public:
+        /**
+        * User Agent string user for http calls.
+        */
+        std::string userAgent;
+        /**
+        * Http scheme to use. E.g. Http or Https.
+        */
+        Http::Scheme scheme;
+        /**
+        * Max concurrent tcp connections for a single http client to use.
+        */
+        unsigned maxConnections;
+        /**
+        * Socket read timeouts. Default 3000 ms. 
+        */
+        long requestTimeoutMs;
+        /**
+        * Socket connect timeout. 
+        */
+        long connectTimeoutMs;
+        /**
+        * Strategy to use in case of failed requests.
+        */
+        std::shared_ptr<RetryStrategy> retryStrategy;
+        /**
+        * The proxy scheme. Default HTTP
+        */
+        Http::Scheme proxyScheme;
+        /**
+        * The proxy host.
+        */
+        std::string proxyHost;
+        /**
+        * The proxy port.
+        */
+        unsigned int proxyPort;
+        /**
+        * The proxy username.
+        */
+        std::string proxyUserName;
+        /**
+        *  The proxy password
+        */
+        std::string proxyPassword;
+        /**
+        * set false to bypass SSL check.
+        */
+        bool verifySSL;
+        /**
+        * your Certificate Authority path. 
+        */
+        std::string caPath;
+        /**
+        * your certificate file.
+        */
+        std::string caFile;
+        /**
+        * your certificate file.
+        */
+        bool isCname;
+        /**
+        * enable or disable crc64 check.
+        */
+        bool enableCrc64;
+        /**
+        * enable or disable auto correct http request date.
+        */
+        bool enableDateSkewAdjustment;
+        /**
+        * Rate limit data upload speed.
+        */
+        std::shared_ptr<RateLimiter> sendRateLimiter;
+        /**
+        * Rate limit data download speed.
+        */
+        std::shared_ptr<RateLimiter> recvRateLimiter;
+        /**
+        * The interface for outgoing traffic. E.g. eth0 in linux
+        */
+        std::string networkInterface;
+    };
+}
+}

+ 67 - 0
include/alibabacloud/oss/client/Error.h

@@ -0,0 +1,67 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <string>
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/Types.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    /*
+    The status comes from the following modules: client, server, httpclient(ex. curl).
+    server: [100-600)  
+    client: [100000-199999]
+    curl  : [200000-299999], 200000 + CURLcode
+
+    it's sucessful only if the status/100 equals to 2.
+    */
+    const int ERROR_CLIENT_BASE      = 100000;
+    const int ERROR_CRC_INCONSISTENT = ERROR_CLIENT_BASE + 1;
+    const int ERROR_REQUEST_DISABLE  = ERROR_CLIENT_BASE + 2;
+
+    const int ERROR_CURL_BASE = 200000;
+
+    class ALIBABACLOUD_OSS_EXPORT Error
+    {
+    public:
+        Error() = default;
+        Error(const std::string& code, const std::string& message):
+            status_(0),
+            code_(code),
+            message_(message)
+        {
+        }
+        ~Error() = default;
+
+        long Status() const {return status_;}
+        const std::string& Code()const {return code_;}
+        const std::string& Message() const {return message_;}
+        const HeaderCollection& Headers() const { return headers_; }
+        void setStatus(long status) { status_ = status;}
+        void setCode(const std::string& code) { code_ = code;}
+        void setMessage(const std::string& message) { message_ = message;}
+        void setHeaders(const HeaderCollection& headers) { headers_ = headers; }
+    private:
+        long status_;
+        std::string code_;
+        std::string message_;
+        HeaderCollection headers_;
+    };
+}
+}

+ 34 - 0
include/alibabacloud/oss/client/RateLimiter.h

@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#include <alibabacloud/oss/Export.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    /*the unit of rate is kB/S*/
+    class  ALIBABACLOUD_OSS_EXPORT RateLimiter
+    {
+    public:
+        virtual ~RateLimiter() {}
+        virtual void setRate(int rate) = 0;
+        virtual int Rate() const = 0;
+    };
+} 
+}

+ 33 - 0
include/alibabacloud/oss/client/RetryStrategy.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#include <alibabacloud/oss/client/Error.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class  ALIBABACLOUD_OSS_EXPORT RetryStrategy
+    {
+    public:
+        virtual ~RetryStrategy() {}
+        virtual bool shouldRetry(const Error& error, long attemptedRetries) const = 0;
+        virtual long calcDelayTimeMs(const Error& error, long attemptedRetries) const = 0;
+    };
+} 
+}

+ 74 - 0
include/alibabacloud/oss/http/HttpType.h

@@ -0,0 +1,74 @@
+/*
+ * 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.
+ */
+
+#pragma once
+
+#include <string>
+#include <map>
+#include <alibabacloud/oss/Export.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+
+    class  ALIBABACLOUD_OSS_EXPORT Http
+    {
+        public:
+            enum Method
+            {
+                Get,
+                Head,
+                Post,
+                Put,
+                Delete,
+                Connect,
+                Options,
+                Patch,
+                Trace
+            };
+            enum Scheme
+            {
+                HTTP,
+                HTTPS
+            };
+            static std::string MethodToString(Method method);
+            static std::string SchemeToString(Scheme scheme);
+
+            //HEADERS
+            static const char* ACCEPT;
+            static const char* ACCEPT_CHARSET;
+            static const char* ACCEPT_ENCODING;
+            static const char* ACCEPT_LANGUAGE;
+            static const char* AUTHORIZATION;
+            static const char* CACHE_CONTROL;
+            static const char* CONTENT_DISPOSITION;
+            static const char* CONTENT_ENCODING;
+            static const char* CONTENT_LENGTH;
+            static const char* CONTENT_MD5;
+            static const char* CONTENT_RANGE;
+            static const char* CONTENT_TYPE;
+            static const char* DATE;
+            static const char* EXPECT;
+            static const char* EXPIRES;
+            static const char* ETAG;
+            static const char* LAST_MODIFIED;
+            static const char* RANGE;
+            static const char* USER_AGENT;
+
+    };
+}
+}

+ 37 - 0
include/alibabacloud/oss/model/AbortMultipartUploadRequest.h

@@ -0,0 +1,37 @@
+/*
+ * Copyright 2009-2018 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+#include <iostream>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT AbortMultipartUploadRequest: public OssObjectRequest
+    {
+    public:
+        AbortMultipartUploadRequest(const std::string& bucket, const std::string& key, 
+            const std::string& uploadId);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    private:
+        std::string uploadId_;
+    };
+} 
+}

+ 57 - 0
include/alibabacloud/oss/model/AppendObjectRequest.h

@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+#include <alibabacloud/oss/Types.h>
+#include <alibabacloud/oss/model/ObjectMetaData.h>
+
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT AppendObjectRequest: public OssObjectRequest
+    {
+    public:
+        AppendObjectRequest(const std::string& bucket, const std::string& key,
+            const std::shared_ptr<std::iostream>& content);
+        AppendObjectRequest(const std::string& bucket, const std::string& key,
+            const std::shared_ptr<std::iostream>& content,
+            const ObjectMetaData& meta);
+        void setPosition(uint64_t position);
+        void setCacheControl(const std::string& value);
+        void setContentDisposition(const std::string& value);
+        void setContentEncoding(const std::string& value);
+        void setContentMd5(const std::string& value);
+        void setExpires(uint64_t expires);
+        void setExpires(const std::string& value);
+        void setAcl(const CannedAccessControlList& acl);
+        void setTagging(const std::string& value);
+        void setTrafficLimit(uint64_t value);
+        virtual std::shared_ptr<std::iostream> Body() const;
+    protected:
+        virtual HeaderCollection specialHeaders() const ;
+        virtual ParameterCollection specialParameters() const;
+    private:
+        uint64_t position_;
+        std::shared_ptr<std::iostream> content_;
+        ObjectMetaData metaData_;
+    };
+}
+}
+

+ 41 - 0
include/alibabacloud/oss/model/AppendObjectResult.h

@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <string>
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssResult.h>
+#include <alibabacloud/oss/ServiceRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT AppendObjectResult : public OssObjectResult
+    {
+    public:
+       public:
+        AppendObjectResult();
+        AppendObjectResult(const HeaderCollection& header);
+        uint64_t Length() const { return length_ ; }
+        uint64_t CRC64() const { return crc64_ ; }
+     private:
+        uint64_t length_;
+        uint64_t crc64_;
+    };
+} 
+}
+

+ 50 - 0
include/alibabacloud/oss/model/Bucket.h

@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <string>
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/Types.h>
+#include <alibabacloud/oss/model/Owner.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ListBucketsResult;
+    class ALIBABACLOUD_OSS_EXPORT Bucket
+    {
+    public:
+        Bucket() = default;
+        const std::string& Location() const { return location_; }
+        const std::string& Name() const { return name_; }
+        const std::string& CreationDate() const { return creationDate_; }
+        const std::string& IntranetEndpoint() const { return intranetEndpoint_; }
+        const std::string& ExtranetEndpoint() const { return extranetEndpoint_; }
+        AlibabaCloud::OSS::StorageClass StorageClass() const { return storageClass_; }
+        const AlibabaCloud::OSS::Owner& Owner() const { return owner_; }
+    private:
+        friend class ListBucketsResult;
+        std::string location_;
+        std::string name_;
+        std::string creationDate_;
+        std::string intranetEndpoint_;
+        std::string extranetEndpoint_;
+        AlibabaCloud::OSS::StorageClass storageClass_;
+        AlibabaCloud::OSS::Owner owner_;
+    };
+}
+}

+ 61 - 0
include/alibabacloud/oss/model/CORSRule.h

@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <string>
+#include <list>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    using CORSAllowedList = std::list<std::string>;
+    class ALIBABACLOUD_OSS_EXPORT CORSRule
+    {
+    public:
+        static const int UNSET_AGE_SEC = -1;
+    public:
+        CORSRule() : maxAgeSeconds_(UNSET_AGE_SEC) {}
+        const CORSAllowedList& AllowedOrigins() const { return allowedOrigins_; }
+        const CORSAllowedList& AllowedMethods() const { return allowedMethods_; }
+        const CORSAllowedList& AllowedHeaders() const { return allowedHeaders_; }
+        const CORSAllowedList& ExposeHeaders() const { return exposeHeaders_; }
+        int MaxAgeSeconds() const { return maxAgeSeconds_; }
+        void addAllowedOrigin(const std::string& origin) { allowedOrigins_.push_back(origin); }
+        void addAllowedMethod(const std::string& method) { allowedMethods_.push_back(method); }
+        void addAllowedHeader(const std::string& header) { allowedHeaders_.push_back(header); }
+        void addExposeHeader(const std::string& header) { exposeHeaders_.push_back(header); }
+        void setMaxAgeSeconds(int value) { maxAgeSeconds_ = value; }
+        void clear()
+        {
+            allowedOrigins_.clear();
+            allowedMethods_.clear();
+            allowedHeaders_.clear();
+            exposeHeaders_.clear();
+            maxAgeSeconds_ = UNSET_AGE_SEC;
+        }
+    private:
+        CORSAllowedList allowedOrigins_;
+        CORSAllowedList allowedMethods_;
+        CORSAllowedList allowedHeaders_;
+        CORSAllowedList exposeHeaders_;
+        int maxAgeSeconds_;
+    };
+
+    using CORSRuleList = std::list<CORSRule>;
+} 
+}

+ 57 - 0
include/alibabacloud/oss/model/CompleteMultipartUploadRequest.h

@@ -0,0 +1,57 @@
+/*
+ * Copyright 2009-2018 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+#include <alibabacloud/oss/model/Part.h>
+#include <alibabacloud/oss/model/ObjectMetaData.h>
+#include <sstream>
+#include <iostream>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT CompleteMultipartUploadRequest: public OssObjectRequest
+    {
+    public:
+        CompleteMultipartUploadRequest(const std::string& bucket, const std::string& key);
+        CompleteMultipartUploadRequest(const std::string& bucket, const std::string& key,
+            const PartList& partList);
+        CompleteMultipartUploadRequest(const std::string& bucket, const std::string& key, 
+            const PartList& partList, 
+            const std::string& uploadId);
+        void setEncodingType(const std::string& encodingType);
+        void setPartList(const AlibabaCloud::OSS::PartList& partList);
+        void setUploadId(const std::string& uploadId);
+        void setAcl(CannedAccessControlList acl);
+        void setCallback(const std::string& callback, const std::string& callbackVar = "");
+        ObjectMetaData& MetaData();
+    protected:
+        virtual std::string payload() const;
+        virtual ParameterCollection specialParameters() const;
+        virtual HeaderCollection specialHeaders() const;
+        virtual int validate() const;
+    private:
+        AlibabaCloud::OSS::PartList partList_;
+        std::string uploadId_;
+        std::string encodingType_;
+        bool encodingTypeIsSet_;
+        ObjectMetaData metaData_;
+    };
+} 
+}

+ 53 - 0
include/alibabacloud/oss/model/CompleteMultipartUploadResult.h

@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <memory>
+#include <iostream>
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssResult.h>
+#include <alibabacloud/oss/model/LifecycleRule.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT CompleteMultipartUploadResult: public OssObjectResult
+    {
+    public:
+        CompleteMultipartUploadResult();
+        CompleteMultipartUploadResult(const std::string& data);
+        CompleteMultipartUploadResult(const std::shared_ptr<std::iostream>& data, 
+            const HeaderCollection& headers);
+        CompleteMultipartUploadResult& operator=(const std::string& data);
+        const std::string& Location() const;
+        const std::string& Bucket() const;
+        const std::string& Key() const;
+        const std::string& ETag() const;
+        const std::string& EncodingType() const;
+        uint64_t CRC64() const;
+        const std::shared_ptr<std::iostream>& Content() const;
+    private:
+        std::string location_;
+        std::string bucket_;
+        std::string key_;
+        std::string eTag_;
+        std::string encodingType_;
+        uint64_t crc64_;
+        std::shared_ptr<std::iostream> content_;
+    };
+} 
+}

+ 55 - 0
include/alibabacloud/oss/model/CopyObjectRequest.h

@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+#include <alibabacloud/oss/Types.h>
+#include <alibabacloud/oss/model/ObjectMetaData.h>
+
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT CopyObjectRequest: public OssObjectRequest
+    {
+    public:
+        CopyObjectRequest(const std::string& bucket, const std::string& key);
+        CopyObjectRequest(const std::string& bucket, const std::string& key,
+            const ObjectMetaData& meta);
+        void setCopySource(const std::string& srcBucket,const std::string& srcObject);
+        void setSourceIfMatchETag(const std::string& value);
+        void setSourceIfNotMatchETag(const std::string& value);
+        void setSourceIfUnModifiedSince(const std::string& value);
+        void setSourceIfModifiedSince(const std::string& value);
+        void setMetadataDirective(const CopyActionList& action);
+        void setAcl(const CannedAccessControlList& acl);
+        void setTagging(const std::string& value);
+        void setTaggingDirective(const CopyActionList& action);
+        void setTrafficLimit(uint64_t value);
+
+    protected:
+        virtual HeaderCollection specialHeaders() const ;
+        virtual ParameterCollection specialParameters() const;
+    private:
+        std::string sourceBucket_;
+        std::string sourceKey_;
+        ObjectMetaData metaData_;
+    };
+}
+}
+

+ 50 - 0
include/alibabacloud/oss/model/CopyObjectResult.h

@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <string>
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssResult.h>
+#include <alibabacloud/oss/ServiceRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT CopyObjectResult : public OssObjectResult
+    {
+    public:
+        CopyObjectResult();
+        CopyObjectResult(const std::string& data);
+        CopyObjectResult(const std::shared_ptr<std::iostream>& data);
+        CopyObjectResult(const HeaderCollection& headers, const std::shared_ptr<std::iostream>& data);
+        CopyObjectResult& operator=(const std::string& data);
+        const std::string& ETag() const { return etag_; }
+        const std::string& LastModified() const { return lastModified_; }
+        const std::string& SourceVersionId() { return sourceVersionId_; }
+
+        void setEtag(const std::string& etag) { etag_ = etag; }
+        void setLastModified(const std::string& lastModified) { lastModified_ = lastModified; }
+        void setVersionId(const std::string& versionId) { versionId_ = versionId; }
+        void setRequestId(const std::string& requestId) { requestId_ = requestId; }
+     private:
+        std::string etag_;
+        std::string lastModified_;
+        std::string sourceVersionId_;
+    };
+} 
+}
+

+ 42 - 0
include/alibabacloud/oss/model/CreateBucketRequest.h

@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+#include <alibabacloud/oss/Types.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT CreateBucketRequest: public OssBucketRequest
+    {
+    public:
+        CreateBucketRequest(const std::string& bucket, StorageClass storageClass = StorageClass::Standard);
+        CreateBucketRequest(const std::string& bucket, StorageClass storageClass, 
+            CannedAccessControlList acl);
+        void setDataRedundancyType(DataRedundancyType type) { dataRedundancyType_ = type; }
+    protected:
+        virtual std::string payload() const;
+        virtual HeaderCollection specialHeaders() const;
+    private:
+        StorageClass storageClass_;
+        CannedAccessControlList acl_;
+        DataRedundancyType dataRedundancyType_;
+    };
+} 
+}

+ 45 - 0
include/alibabacloud/oss/model/CreateSelectObjectMetaRequest.h

@@ -0,0 +1,45 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/OssRequest.h>
+#include <alibabacloud/oss/model/InputFormat.h>
+
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+
+    class ALIBABACLOUD_OSS_EXPORT CreateSelectObjectMetaRequest : public OssObjectRequest
+    {
+    public:
+        CreateSelectObjectMetaRequest(const std::string& bucket, const std::string& key);
+
+        void setOverWriteIfExists(bool overWriteIfExist);
+        void setInputFormat(InputFormat& inputFormat);
+   
+    protected:
+        virtual int validate() const;
+        virtual std::string payload() const;
+        virtual ParameterCollection specialParameters() const;
+
+    private:
+        InputFormat *inputFormat_;
+        bool overWriteIfExists_;
+    };
+}
+}

+ 60 - 0
include/alibabacloud/oss/model/CreateSelectObjectMetaResult.h

@@ -0,0 +1,60 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/OssResult.h>
+#include <memory>
+#include <iostream>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT CreateSelectObjectMetaResult : public OssResult
+    {
+    public:
+        CreateSelectObjectMetaResult();
+        CreateSelectObjectMetaResult(
+            const std::string& bucket,
+            const std::string& key,
+            const std::string& requestId,
+            const std::shared_ptr<std::iostream>& data);
+        CreateSelectObjectMetaResult& operator=(const std::shared_ptr<std::iostream>& data);
+
+        const std::string& Bucket() const { return bucket_; }
+        const std::string& Key()  const { return key_; }
+        uint64_t Offset() const { return offset_; }
+        uint64_t TotalScanned() const { return totalScanned_; }
+        uint32_t Status() const { return status_; }
+        uint32_t SplitsCount() const { return splitsCount_; }
+        uint64_t RowsCount() const { return rowsCount_; }
+        uint32_t ColsCount() const { return colsCount_; }
+        const std::string& ErrorMessage() const { return errorMessage_; }
+
+    private:
+        std::string bucket_;
+        std::string key_;
+        uint64_t offset_;
+        uint64_t totalScanned_;
+        uint32_t status_;
+        uint32_t splitsCount_;
+        uint64_t rowsCount_;
+        uint32_t colsCount_;
+        std::string errorMessage_;
+    };
+
+}
+}

+ 43 - 0
include/alibabacloud/oss/model/CreateSymlinkRequest.h

@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+#include <alibabacloud/oss/Types.h>
+#include <alibabacloud/oss/model/ObjectMetaData.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT CreateSymlinkRequest: public OssObjectRequest
+    {
+    public:
+        CreateSymlinkRequest(const std::string& bucket, const std::string& key);
+        CreateSymlinkRequest(const std::string& bucket, const std::string& key,
+            const ObjectMetaData& meta);
+        void SetSymlinkTarget(const std::string& value);
+        void setTagging(const std::string& value);
+    protected:
+        virtual HeaderCollection specialHeaders() const ;
+        virtual ParameterCollection specialParameters() const;
+    private:
+        ObjectMetaData metaData_;
+    };
+}
+}
+

+ 39 - 0
include/alibabacloud/oss/model/CreateSymlinkResult.h

@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <string>
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssResult.h>
+#include <alibabacloud/oss/ServiceRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT CreateSymlinkResult : public OssObjectResult
+    {
+    public:
+        CreateSymlinkResult();
+        CreateSymlinkResult(const std::string& etag);
+        CreateSymlinkResult(const HeaderCollection& headers);
+        const std::string& ETag() const { return etag_; }
+    private:
+        std::string etag_;
+    };
+} 
+}
+

+ 33 - 0
include/alibabacloud/oss/model/DeleteBucketCorsRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT DeleteBucketCorsRequest : public OssBucketRequest
+    {
+    public:
+        DeleteBucketCorsRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 33 - 0
include/alibabacloud/oss/model/DeleteBucketEncryptionRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT DeleteBucketEncryptionRequest : public OssBucketRequest
+    {
+    public:
+        DeleteBucketEncryptionRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+}
+}

+ 35 - 0
include/alibabacloud/oss/model/DeleteBucketLifecycleRequest.h

@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+#include <alibabacloud/oss/model/LifecycleRule.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+
+    class ALIBABACLOUD_OSS_EXPORT DeleteBucketLifecycleRequest : public OssBucketRequest
+    {
+    public:
+        DeleteBucketLifecycleRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 34 - 0
include/alibabacloud/oss/model/DeleteBucketLoggingRequest.h

@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+
+    class ALIBABACLOUD_OSS_EXPORT DeleteBucketLoggingRequest : public OssBucketRequest
+    {
+    public:
+        DeleteBucketLoggingRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 34 - 0
include/alibabacloud/oss/model/DeleteBucketPolicyRequest.h

@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+
+    class ALIBABACLOUD_OSS_EXPORT DeleteBucketPolicyRequest : public OssBucketRequest
+    {
+    public:
+        DeleteBucketPolicyRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 33 - 0
include/alibabacloud/oss/model/DeleteBucketQosInfoRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT DeleteBucketQosInfoRequest : public OssBucketRequest
+    {
+    public:
+        DeleteBucketQosInfoRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+}
+}

+ 34 - 0
include/alibabacloud/oss/model/DeleteBucketRequest.h

@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT DeleteBucketRequest : public OssBucketRequest
+    {
+    public:
+        DeleteBucketRequest(const std::string& bucket):
+            OssBucketRequest(bucket)
+        {
+        }
+    };
+} 
+}

+ 33 - 0
include/alibabacloud/oss/model/DeleteBucketTaggingRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT DeleteBucketTaggingRequest : public OssBucketRequest
+    {
+    public:
+        DeleteBucketTaggingRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+}
+}

+ 33 - 0
include/alibabacloud/oss/model/DeleteBucketWebsiteRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT DeleteBucketWebsiteRequest : public OssBucketRequest
+    {
+    public:
+        DeleteBucketWebsiteRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 34 - 0
include/alibabacloud/oss/model/DeleteLiveChannelRequest.h

@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT DeleteLiveChannelRequest : public LiveChannelRequest
+    {
+    public:
+        DeleteLiveChannelRequest(const std::string& bucket, const std::string& channelName);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+        virtual int validate() const;
+    };
+} 
+}

+ 40 - 0
include/alibabacloud/oss/model/DeleteObjectRequest.h

@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT DeleteObjectRequest : public OssObjectRequest
+    {
+    public:
+        DeleteObjectRequest(const std::string& bucket, const std::string& key):
+            OssObjectRequest(bucket, key)
+        {
+        }
+
+        DeleteObjectRequest(const std::string& bucket, const std::string& key, const std::string& versionId) :
+            OssObjectRequest(bucket, key)
+        {
+            versionId_ = versionId;
+        }
+    };
+} 
+}

+ 37 - 0
include/alibabacloud/oss/model/DeleteObjectResult.h

@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssResult.h>
+#include <alibabacloud/oss/Types.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT DeleteObjectResult : public OssObjectResult
+    {
+    public:
+        DeleteObjectResult();
+        DeleteObjectResult(const HeaderCollection& header);
+        bool DeleteMarker() const;
+    private:
+        bool deleteMarker_;
+    };
+} 
+}
+

+ 33 - 0
include/alibabacloud/oss/model/DeleteObjectTaggingRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT DeleteObjectTaggingRequest : public OssObjectRequest
+    {
+    public:
+        DeleteObjectTaggingRequest(const std::string& bucket, const std::string& key);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 33 - 0
include/alibabacloud/oss/model/DeleteObjectTaggingResult.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssResult.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT DeleteObjectTaggingResult : public OssObjectResult
+    {
+    public:
+        DeleteObjectTaggingResult():OssObjectResult(){}
+        DeleteObjectTaggingResult(const HeaderCollection& headers) : OssObjectResult(headers) {}
+    };
+} 
+}
+

+ 69 - 0
include/alibabacloud/oss/model/DeleteObjectVersionsRequest.h

@@ -0,0 +1,69 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+#include <list>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT ObjectIdentifier
+    {
+    public:
+        ObjectIdentifier() {};
+        ObjectIdentifier(const std::string& key) : key_(key) {};
+        ObjectIdentifier(const std::string& key, const std::string& versionId) : key_(key), versionId_(versionId) {};
+        void setKey(const std::string& key) { key_ = key; };
+        void setVersionId(const std::string& versionId) { versionId_ = versionId; };
+        const std::string& Key() const { return key_; }
+        const std::string& VersionId() const { return versionId_; }
+    private:
+        std::string key_;
+        std::string versionId_;
+    };
+
+    using ObjectIdentifierList = std::vector<ObjectIdentifier>;
+
+    class ALIBABACLOUD_OSS_EXPORT DeleteObjectVersionsRequest : public OssBucketRequest
+    {
+    public:
+        DeleteObjectVersionsRequest(const std::string& bucket);
+        bool Quiet() const;
+        const std::string& EncodingType() const;
+        void setQuiet(bool quiet);
+        void setEncodingType(const std::string& value);
+
+        void addObject(const ObjectIdentifier& object);
+        void setObjects(const ObjectIdentifierList& objects);
+        const ObjectIdentifierList& Objects() const;
+        void clearObjects();
+
+        void setRequestPayer(RequestPayer value);
+    protected:
+        virtual std::string payload() const;
+        virtual ParameterCollection specialParameters() const;
+        virtual HeaderCollection specialHeaders() const;
+    private:
+        bool quiet_;
+        std::string encodingType_;
+        ObjectIdentifierList objects_;
+        RequestPayer requestPayer_;
+    };
+} 
+}

+ 61 - 0
include/alibabacloud/oss/model/DeleteObjectVersionsResult.h

@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/OssResult.h>
+#include <memory>
+#include <iostream>
+#include <list>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT DeletedObject
+    {
+    public:
+        DeletedObject():deleteMarker_(false) {}
+        const std::string& Key() const { return key_; }
+        const std::string& VersionId() const { return versionId_; }
+        const std::string& DeleteMarkerVersionId() const { return deleteMarkerVersionId_; }
+        bool DeleteMarker() const { return deleteMarker_; }
+        void setKey(const std::string& value) { key_ = value; }
+        void setVersionId(const std::string& value) { versionId_ = value; }
+        void setDeleteMarkerVersionId(const std::string& value) { deleteMarkerVersionId_ = value; }
+        void setDeleteMarker(bool value) { deleteMarker_ = value; }
+    private:
+        std::string key_;
+        std::string versionId_;
+        std::string deleteMarkerVersionId_;
+        bool deleteMarker_;
+    };
+    using DeletedObjectList = std::vector<DeletedObject>;
+    
+    class ALIBABACLOUD_OSS_EXPORT DeleteObjectVersionsResult : public OssResult
+    {
+    public:
+        DeleteObjectVersionsResult();
+        DeleteObjectVersionsResult(const std::string& data);
+        DeleteObjectVersionsResult(const std::shared_ptr<std::iostream>& data);
+        DeleteObjectVersionsResult& operator=(const std::string& data);
+        bool Quiet() const;
+        const DeletedObjectList& DeletedObjects() const;
+    private:
+        bool quiet_;
+        DeletedObjectList deletedObjects_;
+    };
+} 
+}

+ 51 - 0
include/alibabacloud/oss/model/DeleteObjectsRequest.h

@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+#include <list>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    using DeletedKeyList = std::list<std::string>;
+    class ALIBABACLOUD_OSS_EXPORT DeleteObjectsRequest : public OssBucketRequest
+    {
+    public:
+        DeleteObjectsRequest(const std::string& bucket);
+        bool Quiet() const;
+        const std::string& EncodingType() const;
+        const DeletedKeyList& KeyList() const;
+        void setQuiet(bool quiet);
+        void setEncodingType(const std::string& value);
+        void addKey(const std::string& key);
+        void setKeyList(const DeletedKeyList& keyList);
+        void clearKeyList();
+        void setRequestPayer(RequestPayer value);
+    protected:
+        virtual std::string payload() const;
+        virtual ParameterCollection specialParameters() const;
+        virtual HeaderCollection specialHeaders() const;
+    private:
+        bool quiet_;
+        std::string encodingType_;
+        DeletedKeyList keyList_;
+        RequestPayer requestPayer_;
+    };
+} 
+}

+ 41 - 0
include/alibabacloud/oss/model/DeleteObjectsResult.h

@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/OssResult.h>
+#include <memory>
+#include <iostream>
+#include <list>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT DeleteObjectsResult : public OssResult
+    {
+    public:
+        DeleteObjectsResult();
+        DeleteObjectsResult(const std::string& data);
+        DeleteObjectsResult(const std::shared_ptr<std::iostream>& data);
+        DeleteObjectsResult& operator=(const std::string& data);
+        bool Quiet() const;
+        const std::list<std::string>& keyList() const;
+    private:
+        bool quiet_;
+        std::list<std::string> keyList_;
+    };
+} 
+}

+ 89 - 0
include/alibabacloud/oss/model/DownloadObjectRequest.h

@@ -0,0 +1,89 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+#include <alibabacloud/oss/model/ObjectMetaData.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT DownloadObjectRequest : public OssResumableBaseRequest 
+    {
+    public:
+        DownloadObjectRequest(const std::string& bucket, const std::string& key, 
+            const std::string& filePath);
+        DownloadObjectRequest(const std::string& bucket, const std::string& key, 
+            const std::string& filePath, const std::string& checkpointDir, 
+            const uint64_t partSize, const uint32_t threadNum);
+        DownloadObjectRequest(const std::string& bucket, const std::string& key,
+            const std::string& filePath, const std::string& checkpointDir);
+
+        const std::string& FilePath() const { return filePath_; }
+        const std::string& TempFilePath() const { return tempFilePath_; }
+
+        DownloadObjectRequest(const std::string& bucket, const std::string& key,
+            const std::wstring& filePath);
+        DownloadObjectRequest(const std::string& bucket, const std::string& key,
+            const std::wstring& filePath, const std::wstring& checkpointDir,
+            const uint64_t partSize, const uint32_t threadNum);
+        DownloadObjectRequest(const std::string& bucket, const std::string& key,
+            const std::wstring& filePath, const std::wstring& checkpointDir);
+
+        const std::wstring& FilePathW() const { return filePathW_; }
+        const std::wstring& TempFilePathW() const { return tempFilePathW_; }
+
+        std::shared_ptr<std::iostream> Content() { return content_; }
+        bool RangeIsSet() const{ return rangeIsSet_; }
+        int64_t RangeStart() const { return range_[0]; }
+        int64_t RangeEnd() const { return range_[1]; }
+        const std::string& ModifiedSinceConstraint() const { return modifiedSince_; }
+        const std::string& UnmodifiedSinceConstraint() const { return unmodifiedSince_; }
+        const std::vector<std::string>& MatchingETagsConstraint() const { return matchingETags_; }
+        const std::vector<std::string>& NonmatchingETagsConstraint() const { return nonmatchingETags_;}
+        const std::map<std::string, std::string>& ResponseHeaderParameters() const { return responseHeaderParameters_; }
+
+        void setRange(int64_t start, int64_t end);
+        void setModifiedSinceConstraint(const std::string& gmt);
+        void setUnmodifiedSinceConstraint(const std::string& gmt);
+        void setMatchingETagConstraints(const std::vector<std::string>& match);
+        void setNonmatchingETagConstraints(const std::vector<std::string>& match);
+        void addResponseHeaders(RequestResponseHeader header, const std::string& value);
+
+    protected:
+        virtual int validate() const;
+
+    private:	
+        bool rangeIsSet_;
+        int64_t range_[2];
+        std::string modifiedSince_;
+        std::string unmodifiedSince_;
+        std::vector<std::string> matchingETags_;
+        std::vector<std::string> nonmatchingETags_;
+		
+        std::string filePath_;
+        std::string tempFilePath_;
+        std::shared_ptr<std::iostream> content_;
+
+        std::map<std::string, std::string> responseHeaderParameters_;
+
+        std::wstring filePathW_;
+        std::wstring tempFilePathW_;
+    };
+}
+}

+ 55 - 0
include/alibabacloud/oss/model/GeneratePresignedUrlRequest.h

@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+#include <alibabacloud/oss/Types.h>
+#include <alibabacloud/oss/model/ObjectMetaData.h>
+#include <alibabacloud/oss/http/HttpType.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class OssClientImpl;
+    class ALIBABACLOUD_OSS_EXPORT GeneratePresignedUrlRequest
+    {
+    public:
+        GeneratePresignedUrlRequest(const std::string& bucket, const std::string& key);
+        GeneratePresignedUrlRequest(const std::string& bucket, const std::string& key,
+            Http::Method method);
+        void setBucket(const std::string& bucket);
+        void setKey(const std::string& key);
+        void setContentType(const std::string& value);
+        void setContentMd5(const std::string& value);
+        void setExpires(int64_t unixTime);
+        void setProcess(const std::string& process);
+        void setTrafficLimit(uint64_t value);
+        void setVersionId(const std::string& versionId);
+        void addResponseHeaders(RequestResponseHeader header, const std::string& value);
+        void addParameter(const std::string& key, const std::string& value);
+        MetaData& UserMetaData();
+    private:
+        friend class OssClientImpl;
+        std::string bucket_;
+        std::string key_;
+        Http::Method method_;
+        ObjectMetaData metaData_;
+        ParameterCollection parameters_;
+    };
+} 
+}

+ 44 - 0
include/alibabacloud/oss/model/GenerateRTMPSignedUrlRequest.h

@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+#include <alibabacloud/oss/Types.h>
+#include <string>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GenerateRTMPSignedUrlRequest: public LiveChannelRequest
+    {
+    public:
+        GenerateRTMPSignedUrlRequest(const std::string& bucket, 
+            const std::string& channelName, const std::string& playlist, 
+            uint64_t expires);
+
+        void setExpires(uint64_t expires);
+        void setPlayList(const std::string &playList);
+        const std::string& PlayList() const;
+        uint64_t Expires() const;
+        virtual ParameterCollection Parameters() const;
+    private:
+        std::string playList_;
+        uint64_t expires_;
+    };
+} 
+}

+ 33 - 0
include/alibabacloud/oss/model/GetBucketAclRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketAclRequest: public OssBucketRequest
+    {
+    public:
+        GetBucketAclRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 42 - 0
include/alibabacloud/oss/model/GetBucketAclResult.h

@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <memory>
+#include <iostream>
+#include <alibabacloud/oss/OssResult.h>
+#include <alibabacloud/oss/model/Owner.h>
+#include <alibabacloud/oss/Types.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketAclResult : public OssResult
+    {
+    public:
+        GetBucketAclResult();
+        GetBucketAclResult(const std::string& data);
+        GetBucketAclResult(const std::shared_ptr<std::iostream>& data);
+        GetBucketAclResult& operator=(const std::string& data);
+        const AlibabaCloud::OSS::Owner& Owner() { return owner_; }
+        CannedAccessControlList Acl()const  { return acl_; }
+    private:
+        AlibabaCloud::OSS::Owner owner_;
+        CannedAccessControlList acl_;
+    };
+} 
+}

+ 33 - 0
include/alibabacloud/oss/model/GetBucketCorsRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketCorsRequest: public OssBucketRequest
+    {
+    public:
+        GetBucketCorsRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 38 - 0
include/alibabacloud/oss/model/GetBucketCorsResult.h

@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/OssResult.h>
+#include <alibabacloud/oss/model/CORSRule.h>
+#include <alibabacloud/oss/Types.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketCorsResult : public OssResult
+    {
+    public:
+        GetBucketCorsResult();
+        GetBucketCorsResult(const std::string& data);
+        GetBucketCorsResult(const std::shared_ptr<std::iostream>& data);
+        GetBucketCorsResult& operator=(const std::string& data);
+        const CORSRuleList& CORSRules() const { return ruleList_; };
+    private:
+        CORSRuleList ruleList_;
+    };
+} 
+}

+ 34 - 0
include/alibabacloud/oss/model/GetBucketEncryptionRequest.h

@@ -0,0 +1,34 @@
+#pragma once
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketEncryptionRequest : public OssBucketRequest
+    {
+    public:
+        GetBucketEncryptionRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+}
+}

+ 41 - 0
include/alibabacloud/oss/model/GetBucketEncryptionResult.h

@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <memory>
+#include <iostream>
+#include <alibabacloud/oss/OssResult.h>
+#include <alibabacloud/oss/Types.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketEncryptionResult : public OssResult
+    {
+    public:
+        GetBucketEncryptionResult();
+        GetBucketEncryptionResult(const std::string& data);
+        GetBucketEncryptionResult(const std::shared_ptr<std::iostream>& data);
+        GetBucketEncryptionResult& operator=(const std::string& data);
+        AlibabaCloud::OSS::SSEAlgorithm SSEAlgorithm() const { return SSEAlgorithm_; }
+        const std::string& KMSMasterKeyID() const { return KMSMasterKeyID_; }
+    private:
+        AlibabaCloud::OSS::SSEAlgorithm SSEAlgorithm_;
+        std::string KMSMasterKeyID_;
+    };
+}
+}

+ 33 - 0
include/alibabacloud/oss/model/GetBucketInfoRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketInfoRequest: public OssBucketRequest
+    {
+    public:
+        GetBucketInfoRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 63 - 0
include/alibabacloud/oss/model/GetBucketInfoResult.h

@@ -0,0 +1,63 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <memory>
+#include <iostream>
+#include <alibabacloud/oss/Types.h>
+#include <alibabacloud/oss/OssResult.h>
+#include <alibabacloud/oss/model/Owner.h>
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketInfoResult : public OssResult
+    {
+    public:
+        GetBucketInfoResult();
+        GetBucketInfoResult(const std::string& data);
+        GetBucketInfoResult(const std::shared_ptr<std::iostream>& data);
+        GetBucketInfoResult& operator=(const std::string& data);
+        const std::string& Location() const { return location_; }
+        const std::string& Name() const { return name_; }
+        const std::string& CreationDate() const { return creationDate_; }
+        const std::string& IntranetEndpoint() const { return intranetEndpoint_; }
+        const std::string& ExtranetEndpoint() const { return extranetEndpoint_; }
+        AlibabaCloud::OSS::StorageClass StorageClass() const { return storageClass_; }
+        CannedAccessControlList Acl() const { return acl_; }
+        const AlibabaCloud::OSS::Owner& Owner() { return owner_; }
+        AlibabaCloud::OSS::DataRedundancyType DataRedundancyType() const { return dataRedundancyType_; }
+        const std::string& Comment() const { return comment_; }
+        AlibabaCloud::OSS::SSEAlgorithm SSEAlgorithm() { return sseAlgorithm_; }
+        const std::string& KMSMasterKeyID() { return kmsMasterKeyID_; }
+        AlibabaCloud::OSS::VersioningStatus VersioningStatus() { return versioningStatus_; }
+    private:
+        std::string location_;
+        std::string name_;
+        std::string creationDate_;
+        std::string intranetEndpoint_;
+        std::string extranetEndpoint_;
+        AlibabaCloud::OSS::StorageClass storageClass_;
+        CannedAccessControlList acl_;
+        AlibabaCloud::OSS::Owner owner_;
+        AlibabaCloud::OSS::DataRedundancyType dataRedundancyType_;
+        std::string comment_;
+        AlibabaCloud::OSS::SSEAlgorithm sseAlgorithm_;
+        std::string kmsMasterKeyID_;
+        AlibabaCloud::OSS::VersioningStatus versioningStatus_;
+    };
+} 
+}

+ 33 - 0
include/alibabacloud/oss/model/GetBucketLifecycleRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketLifecycleRequest: public OssBucketRequest
+    {
+    public:
+        GetBucketLifecycleRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 39 - 0
include/alibabacloud/oss/model/GetBucketLifecycleResult.h

@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <memory>
+#include <iostream>
+#include <alibabacloud/oss/OssResult.h>
+#include <alibabacloud/oss/model/LifecycleRule.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketLifecycleResult : public OssResult
+    {
+    public:
+        GetBucketLifecycleResult();
+        GetBucketLifecycleResult(const std::string& data);
+        GetBucketLifecycleResult(const std::shared_ptr<std::iostream>& data);
+        GetBucketLifecycleResult& operator=(const std::string& data);
+        const LifecycleRuleList& LifecycleRules() { return lifecycleRuleList_; }
+    private:
+        LifecycleRuleList lifecycleRuleList_;
+    };
+} 
+}

+ 33 - 0
include/alibabacloud/oss/model/GetBucketLocationRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketLocationRequest: public OssBucketRequest
+    {
+    public:
+        GetBucketLocationRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 39 - 0
include/alibabacloud/oss/model/GetBucketLocationResult.h

@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <memory>
+#include <iostream>
+#include <alibabacloud/oss/OssResult.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketLocationResult : public OssResult
+    {
+    public:
+        GetBucketLocationResult();
+        GetBucketLocationResult(const std::string& data);
+        GetBucketLocationResult(const std::shared_ptr<std::iostream>& data);
+        GetBucketLocationResult& operator=(const std::string& data);
+        const std::string& Location() const { return location_; }
+    private:
+        std::string location_;
+    public:
+    };
+} 
+}

+ 33 - 0
include/alibabacloud/oss/model/GetBucketLoggingRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketLoggingRequest: public OssBucketRequest
+    {
+    public:
+        GetBucketLoggingRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 39 - 0
include/alibabacloud/oss/model/GetBucketLoggingResult.h

@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <memory>
+#include <iostream>
+#include <alibabacloud/oss/OssResult.h>
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketLoggingResult : public OssResult
+    {
+    public:
+        GetBucketLoggingResult();
+        GetBucketLoggingResult(const std::string& data);
+        GetBucketLoggingResult(const std::shared_ptr<std::iostream>& data);
+        GetBucketLoggingResult& operator=(const std::string& data);
+        const std::string& TargetBucket() const { return targetBucket_; }
+        const std::string& TargetPrefix() const { return targetPrefix_; }
+    private:
+        std::string targetBucket_;
+        std::string targetPrefix_;
+    };
+} 
+}

+ 33 - 0
include/alibabacloud/oss/model/GetBucketPaymentRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketRequestPaymentRequest: public OssBucketRequest
+    {
+    public:
+        GetBucketRequestPaymentRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 39 - 0
include/alibabacloud/oss/model/GetBucketPaymentResult.h

@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <memory>
+#include <iostream>
+#include <alibabacloud/oss/OssResult.h>
+#include <alibabacloud/oss/Types.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketPaymentResult : public OssResult
+    {
+    public:
+        GetBucketPaymentResult();
+        GetBucketPaymentResult(const std::string& data);
+        GetBucketPaymentResult(const std::shared_ptr<std::iostream>& data);
+        GetBucketPaymentResult& operator=(const std::string& data);
+        RequestPayer Payer()const { return payer_; }
+    private:
+        RequestPayer payer_;
+    };
+} 
+}

+ 33 - 0
include/alibabacloud/oss/model/GetBucketPolicyRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketPolicyRequest : public OssBucketRequest
+    {
+    public:
+        GetBucketPolicyRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 38 - 0
include/alibabacloud/oss/model/GetBucketPolicyResult.h

@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <memory>
+#include <iostream>
+#include <alibabacloud/oss/OssResult.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketPolicyResult : public OssResult
+    {
+    public:
+        GetBucketPolicyResult();
+        GetBucketPolicyResult(const std::string& data);
+        GetBucketPolicyResult(const std::shared_ptr<std::iostream>& data);
+        GetBucketPolicyResult& operator=(const std::string& data);
+        const std::string& Policy()const  { return policy_; }
+    private:
+        std::string policy_;
+    };
+} 
+}

+ 33 - 0
include/alibabacloud/oss/model/GetBucketQosInfoRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketQosInfoRequest : public OssBucketRequest
+    {
+    public:
+        GetBucketQosInfoRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+}
+}

+ 38 - 0
include/alibabacloud/oss/model/GetBucketQosInfoResult.h

@@ -0,0 +1,38 @@
+/*
+ * 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 <memory>
+#include <iostream>
+#include <alibabacloud/oss/OssResult.h>
+#include <alibabacloud/oss/model/QosConfiguration.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketQosInfoResult : public OssResult
+    {
+    public:
+        GetBucketQosInfoResult();
+        GetBucketQosInfoResult(const std::string& data);
+        GetBucketQosInfoResult(const std::shared_ptr<std::iostream>& data);
+        GetBucketQosInfoResult& operator=(const std::string& data);
+        const QosConfiguration& QosInfo() const { return qosInfo_; }
+    private:
+        QosConfiguration qosInfo_;
+    };
+}
+}

+ 33 - 0
include/alibabacloud/oss/model/GetBucketRefererRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketRefererRequest : public OssBucketRequest
+    {
+    public:
+        GetBucketRefererRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 41 - 0
include/alibabacloud/oss/model/GetBucketRefererResult.h

@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <memory>
+#include <iostream>
+#include <alibabacloud/oss/OssResult.h>
+#include <alibabacloud/oss/Types.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketRefererResult : public OssResult
+    {
+    public:
+        GetBucketRefererResult();
+        GetBucketRefererResult(const std::string& data);
+        GetBucketRefererResult(const std::shared_ptr<std::iostream>& data);
+        GetBucketRefererResult& operator=(const std::string& data);
+        const AlibabaCloud::OSS::RefererList& RefererList() const { return refererList_;}
+        bool AllowEmptyReferer() const { return allowEmptyReferer_; }
+    private:
+        AlibabaCloud::OSS::RefererList refererList_;
+        bool allowEmptyReferer_;
+    };
+} 
+}

+ 33 - 0
include/alibabacloud/oss/model/GetBucketStatRequest.h

@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <alibabacloud/oss/Export.h>
+#include <alibabacloud/oss/OssRequest.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketStatRequest: public OssBucketRequest
+    {
+    public:
+        GetBucketStatRequest(const std::string& bucket);
+    protected:
+        virtual ParameterCollection specialParameters() const;
+    };
+} 
+}

+ 42 - 0
include/alibabacloud/oss/model/GetBucketStatResult.h

@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+
+#pragma once
+#include <memory>
+#include <iostream>
+#include <alibabacloud/oss/OssResult.h>
+
+namespace AlibabaCloud
+{
+namespace OSS
+{
+    class ALIBABACLOUD_OSS_EXPORT GetBucketStatResult : public OssResult
+    {
+    public:
+        GetBucketStatResult();
+        GetBucketStatResult(const std::string& data);
+        GetBucketStatResult(const std::shared_ptr<std::iostream>& data);
+        GetBucketStatResult& operator=(const std::string& data);
+        uint64_t Storage() const { return storage_; }
+        uint64_t ObjectCount() const { return objectCount_; }
+        uint64_t MultipartUploadCount() const { return multipartUploadCount_; }
+    private:
+        uint64_t storage_;
+        uint64_t objectCount_;
+        uint64_t multipartUploadCount_;
+    };
+} 
+}

+ 0 - 0
include/alibabacloud/oss/model/GetBucketStorageCapacityRequest.h


Неке датотеке нису приказане због велике количине промена