| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- /*
- * 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_;
- };
- }
- }
|