sdk/include/alibabacloud/oss/OssClient.h (230 lines of code) (raw):

/* * 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); virtual ~OssClient(); #if !defined(OSS_DISABLE_BUCKET) /*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; ListBucketInventoryConfigurationsOutcome ListBucketInventoryConfigurations(const ListBucketInventoryConfigurationsRequest& 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 SetBucketInventoryConfiguration(const SetBucketInventoryConfigurationRequest& 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; VoidOutcome DeleteBucketInventoryConfiguration(const DeleteBucketInventoryConfigurationRequest& 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; GetBucketInventoryConfigurationOutcome GetBucketInventoryConfiguration(const GetBucketInventoryConfigurationRequest& request) const; InitiateBucketWormOutcome InitiateBucketWorm(const InitiateBucketWormRequest& request) const; VoidOutcome AbortBucketWorm(const AbortBucketWormRequest& request) const; VoidOutcome CompleteBucketWorm(const CompleteBucketWormRequest& request) const; VoidOutcome ExtendBucketWormWorm(const ExtendBucketWormRequest& request) const; GetBucketWormOutcome GetBucketWorm(const GetBucketWormRequest& request) const; #endif /*Object*/ ListObjectOutcome ListObjects(const std::string& bucket) const; ListObjectOutcome ListObjects(const std::string& bucket, const std::string& prefix) const; ListObjectOutcome ListObjects(const ListObjectsRequest& request) const; ListObjectsV2Outcome ListObjectsV2(const ListObjectsV2Request& 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; 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*/ #if !defined(OSS_DISABLE_RESUAMABLE) PutObjectOutcome ResumableUploadObject(const UploadObjectRequest& request) const; CopyObjectOutcome ResumableCopyObject(const MultiCopyObjectRequest& request) const; GetObjectOutcome ResumableDownloadObject(const DownloadObjectRequest& request) const; #endif #if !defined(OSS_DISABLE_LIVECHANNEL) /*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; #endif /*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*/ #if !defined(OSS_DISABLE_BUCKET) bool DoesBucketExist(const std::string& bucket) const; #endif 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(); /*Others*/ void SetRegion(const std::string& region); void SetCloudBoxId(const std::string& cloudboxId); protected: std::shared_ptr<OssClientImpl> client_; }; } }