sdk/IOss.cs (189 lines of code) (raw):
/*
* Copyright (C) Alibaba Cloud Computing
* All rights reserved.
*
*/
using System;
using System.IO;
using System.Collections.Generic;
using Aliyun.OSS.Common.Authentication;
using Aliyun.OSS.Common.Internal;
using Aliyun.OSS.Model;
namespace Aliyun.OSS
{
/// <summary>
/// The Object Storage Service (OSS) entry point interface.
/// </summary>
/// <remarks>
/// <para>
/// OSS is the highly scalable, secure, inexpensive and reliable cloud storage service.
/// This interface is to access all the functionality OSS provides.
/// The same functionality could be done in web console.
/// Multimedia sharing web app, network disk, or enterprise data backup app could be easily built based on OSS.
/// </para>
/// <para>
/// OSS website:http://www.aliyun.com/product/oss
/// </para>
/// </remarks>
public interface IOss
{
#region Switch Credentials & Endpoint
/// <summary>
/// Switches the user credentials
/// </summary>
/// <param name="creds">The credential instance</param>
void SwitchCredentials(ICredentials creds);
/// <summary>
/// Sets the endpoint
/// </summary>
/// <param name="endpoint">Endpoint value</param>
void SetEndpoint(Uri endpoint);
#endregion
#region Bucket Operations
/// <summary>
/// Creates a new bucket
/// </summary>
/// <param name="bucketName">The bucket name. It must be globably unique.</param>
/// <returns><see cref="Bucket" /> instance</returns>
Bucket CreateBucket(string bucketName);
/// <summary>
/// Creates the bucket with specified storage class.
/// </summary>
/// <returns>The bucket.</returns>
/// <param name="bucketName">Bucket name.</param>
/// <param name="storageClass">Storage class.</param>
Bucket CreateBucket(string bucketName, StorageClass? storageClass);
/// <summary>
/// Creates a bucket
/// </summary>
/// <returns>The bucket.</returns>
/// <param name="createBucketRequest"><see cref="CreateBucketRequest"/></param>
Bucket CreateBucket(CreateBucketRequest createBucketRequest);
/// <summary>
/// Deletes a empty bucket.If the bucket is not empty, this will fail.
/// </summary>
/// <param name="bucketName">The bucket name to delete</param>
void DeleteBucket(string bucketName);
/// <summary>
/// List all buckets under the current account.
/// </summary>
/// <returns>All <see cref="Bucket" /> instances</returns>
IEnumerable<Bucket> ListBuckets();
/// <summary>
/// Lists all buckets according to the ListBucketsRequest, which could have filters by prefix, marker, etc.
/// </summary>
/// <param name="listBucketsRequest"><see cref="ListBucketsRequest"/> instance</param>
/// <returns><see cref="ListBucketsResult" /> instance</returns>
ListBucketsResult ListBuckets(ListBucketsRequest listBucketsRequest);
/// <summary>
/// Gets the bucket information.
/// </summary>
/// <returns>The bucket information.</returns>
/// <param name="bucketName">Bucket name.</param>
BucketInfo GetBucketInfo(string bucketName);
/// <summary>
/// Gets the bucket stat.
/// </summary>
/// <returns>The bucket stat.</returns>
/// <param name="bucketName">Bucket name.</param>
BucketStat GetBucketStat(string bucketName);
/// <summary>
/// Sets the bucket ACL
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="acl"><see cref="CannedAccessControlList" /> instance</param>
void SetBucketAcl(string bucketName, CannedAccessControlList acl);
/// <summary>
/// Sets the bucket ACL
/// </summary>
/// <param name="setBucketAclRequest"></param>
void SetBucketAcl(SetBucketAclRequest setBucketAclRequest);
/// <summary>
/// Gets the bucket ACL
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <returns>Bucket ACL<see cref="AccessControlList" /> instance</returns>
AccessControlList GetBucketAcl(string bucketName);
/// <summary>
/// Gets the bucket location
/// </summary>
/// <param name="bucketName">bucket name</param>
/// <returns>bucket location</returns>
BucketLocationResult GetBucketLocation(string bucketName);
/// <summary>
/// Gets the bucket metadata
/// </summary>
/// <param name="bucketName">bucket name</param>
/// <returns><see cref="BucketMetadata" />metadata</returns>
BucketMetadata GetBucketMetadata(string bucketName);
/// <summary>
/// Sets the CORS rules for the <see cref="Bucket" />
/// </summary>
/// <param name="setBucketCorsRequest"></param>
void SetBucketCors(SetBucketCorsRequest setBucketCorsRequest);
/// <summary>
/// Gets the <see cref="Bucket" /> CORS rules.
/// </summary>
/// <param name="bucketName">bucket name</param>
/// <returns>CORS rules</returns>
IList<CORSRule> GetBucketCors(string bucketName);
/// <summary>
/// Deletes the CORS rules on the <see cref="Bucket" />
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
void DeleteBucketCors(string bucketName);
/// <summary>
/// Sets <see cref="Bucket" /> logging config
/// OSS will log the access information on this bucket, according to the logging config
/// The hourly log file will be stored in the target bucket.
/// </summary>
/// <param name="setBucketLoggingRequest"></param>
void SetBucketLogging(SetBucketLoggingRequest setBucketLoggingRequest);
/// <summary>
/// Gets the bucket logging config
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <returns>The logging config result</returns>
BucketLoggingResult GetBucketLogging(string bucketName);
/// <summary>
/// Deletes the <see cref="Bucket" /> logging config
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
void DeleteBucketLogging(string bucketName);
/// <summary>
/// Sets <see cref="Bucket" /> static website config
/// </summary>
/// <param name="setBucketWebSiteRequest"><see cref="SetBucketWebsiteRequest"/> instance</param>
void SetBucketWebsite(SetBucketWebsiteRequest setBucketWebSiteRequest);
/// <summary>
/// Gets <see cref="Bucket" /> static website config
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <returns><see cref="BucketWebsiteResult"/> instance</returns>
BucketWebsiteResult GetBucketWebsite(string bucketName);
/// <summary>
/// Deletes the <see cref="Bucket" /> static website config
/// </summary>
/// <param name="bucketName"><see cref="Bucket" />的名称。</param>
void DeleteBucketWebsite(string bucketName);
/// <summary>
/// Sets the <see cref="Bucket" /> referer config
/// </summary>
/// <param name="setBucketRefererRequest">The requests that contains the Referer whitelist</param>
void SetBucketReferer(SetBucketRefererRequest setBucketRefererRequest);
/// <summary>
/// Gets the <see cref="Bucket" /> referer config
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <returns>Referer config</returns>
RefererConfiguration GetBucketReferer(string bucketName);
/// <summary>
/// Sets <see cref="Bucket" /> lifecycle rule
/// </summary>
/// <param name="setBucketLifecycleRequest">the <see cref="SetBucketLifecycleRequest" /> instance</param>
void SetBucketLifecycle(SetBucketLifecycleRequest setBucketLifecycleRequest);
/// <summary>
/// Deletes the bucket's all lifecycle rules.
/// </summary>
/// <param name="bucketName">Bucket name.</param>
void DeleteBucketLifecycle(string bucketName);
/// <summary>
/// Gets <see cref="Bucket" /> lifecycle instance.
/// </summary>
/// <param name="bucketName">bucket name</param>
/// <returns>Lifecycle list</returns>
IList<LifecycleRule> GetBucketLifecycle(string bucketName);
/// <summary>
/// Sets <see cref="Bucket" /> storage capacity
/// </summary>
/// <param name="setBucketStorageCapacityRequest"><see cref="SetBucketStorageCapacityRequest"/> instance</param>
void SetBucketStorageCapacity(SetBucketStorageCapacityRequest setBucketStorageCapacityRequest);
/// <summary>
/// Gets <see cref="Bucket" /> storage capacity
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <returns><see cref="GetBucketStorageCapacityResult"/> instance</returns>
GetBucketStorageCapacityResult GetBucketStorageCapacity(string bucketName);
/// <summary>
/// Checks if the bucket exists
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <returns>
/// True when the bucket exists under the current user;
/// Otherwise returns false.
/// </returns>
bool DoesBucketExist(string bucketName);
/// <summary>
/// Sets <see cref="Bucket" /> policy
/// </summary>
/// <param name="setBucketPolicyRequest"><see cref="SetBucketPolicyRequest"/> instance</param>
void SetBucketPolicy(SetBucketPolicyRequest setBucketPolicyRequest);
/// <summary>
/// Gets <see cref="Bucket" /> policy
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <returns><see cref="GetBucketPolicyResult"/> instance</returns>
GetBucketPolicyResult GetBucketPolicy(string bucketName);
/// <summary>
/// Deletes <see cref="Bucket" /> policy.
/// </summary>
/// <param name="bucketName">Bucket name.</param>
void DeleteBucketPolicy(string bucketName);
/// <summary>
/// Sets <see cref="Bucket" /> bucket tagging
/// </summary>
/// <param name="setBucketTaggingRequest"><see cref="SetBucketTaggingRequest"/> instance</param>
void SetBucketTagging(SetBucketTaggingRequest setBucketTaggingRequest);
/// <summary>
/// Deletes the bucket's tagging.
/// </summary>
/// <param name="bucketName">Bucket name.</param>
void DeleteBucketTagging(string bucketName);
/// <summary>
/// Deletes the bucket's tagging.
/// </summary>
/// <param name="deleteBucketTaggingRequest">DeleteBucketTaggingRequest.</param>
void DeleteBucketTagging(DeleteBucketTaggingRequest deleteBucketTaggingRequest);
/// <summary>
/// Gets <see cref="Bucket" /> bucket tagging
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <returns><see cref="GetBucketTaggingResult"/> instance</returns>
GetBucketTaggingResult GetBucketTagging(string bucketName);
/// <summary>
/// Sets <see cref="Bucket" /> bucket request payment
/// </summary>
/// <param name="setBucketRequestPaymentRequest"><see cref="SetBucketRequestPaymentRequest"/> instance</param>
void SetBucketRequestPayment(SetBucketRequestPaymentRequest setBucketRequestPaymentRequest);
/// <summary>
/// Gets <see cref="Bucket" /> bucket request payment
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <returns><see cref="GetBucketRequestPaymentResult"/></returns>
GetBucketRequestPaymentResult GetBucketRequestPayment(string bucketName);
/// <summary>
/// Sets <see cref="Bucket" /> bucket encryption rule
/// </summary>
/// <param name="setBucketEncryptionRequest"><see cref="SetBucketEncryptionRequest"/> instance</param>
void SetBucketEncryption(SetBucketEncryptionRequest setBucketEncryptionRequest);
/// <summary>
/// Deletes bucket encryption rule
/// </summary>
/// <param name="bucketName">Bucket name.</param>
void DeleteBucketEncryption(string bucketName);
/// <summary>
/// Gets <see cref="Bucket" /> bucket encryption rule
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <returns><see cref="BucketEncryptionResult"/> instance</returns>
BucketEncryptionResult GetBucketEncryption(string bucketName);
/// <summary>
/// Sets <see cref="Bucket" /> bucket versioning
/// </summary>
/// <param name="setBucketVersioningRequest"><see cref="SetBucketEncryptionRequest"/> instance</param>
void SetBucketVersioning(SetBucketVersioningRequest setBucketVersioningRequest);
/// <summary>
/// Gets <see cref="Bucket" /> bucket versioning
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <returns><see cref="GetBucketVersioningResult"/> instance</returns>
GetBucketVersioningResult GetBucketVersioning(string bucketName);
/// <summary>
/// Sets <see cref="Bucket" /> bucket inventory configuration
/// </summary>
/// <param name="request"><see cref="SetBucketInventoryConfigurationRequest"/> instance</param>
void SetBucketInventoryConfiguration(SetBucketInventoryConfigurationRequest request);
/// <summary>
/// Deletes <see cref="Bucket" /> bucket inventory configuration
/// </summary>
/// <param name="request"><see cref="DeleteBucketInventoryConfigurationRequest"/> instance</param>
void DeleteBucketInventoryConfiguration(DeleteBucketInventoryConfigurationRequest request);
/// <summary>
/// Gets <see cref="Bucket" /> bucket inventory configuration
/// </summary>
/// <param name="request"><see cref="GetBucketInventoryConfigurationRequest"/> instance</param>
/// <returns><see cref="GetBucketInventoryConfigurationResult"/> instance</returns>
GetBucketInventoryConfigurationResult GetBucketInventoryConfiguration(GetBucketInventoryConfigurationRequest request);
/// <summary>
/// Gets <see cref="Bucket" /> bucket inventory configuration
/// </summary>
/// <param name="request"><see cref="ListBucketInventoryConfigurationRequest"/> instance</param>
/// <returns><see cref="ListBucketInventoryConfigurationResult"/> instance</returns>
ListBucketInventoryConfigurationResult ListBucketInventoryConfiguration(ListBucketInventoryConfigurationRequest request);
/// <summary>
/// InitiateBucketWorm
/// </summary>
/// <returns><see cref="InitiateBucketWormResult"/> instance</returns>
/// <param name="request"><see cref="InitiateBucketWormRequest"/> instance</param>
InitiateBucketWormResult InitiateBucketWorm(InitiateBucketWormRequest request);
/// <summary>
/// Gets <see cref="Bucket" /> AbortBucketWorm
/// </summary>
/// <param name="bucketName">Bucket name.</param>
void AbortBucketWorm(string bucketName);
/// <summary>
/// CompleteBucketWorm
/// </summary>
/// <param name="request"><see cref="CompleteBucketWormRequest"/> instance</param>
void CompleteBucketWorm(CompleteBucketWormRequest request);
/// <summary>
/// ExtendBucketWorm
/// </summary>
/// <param name="request"><see cref="ExtendBucketWormRequest"/> instance</param>
void ExtendBucketWorm(ExtendBucketWormRequest request);
/// <summary>
/// GetBucketWormResult
/// </summary>
/// <param name="bucketName">Bucket name.</param>
/// <returns><see cref="GetBucketWormResult"/> instance</returns>
GetBucketWormResult GetBucketWorm(string bucketName);
#endregion
#region Object Operations
/// <summary>
/// Lists all objects under the <see cref="Bucket" />
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <returns><see cref="OssObject" /> list</returns>
ObjectListing ListObjects(string bucketName);
/// <summary>
/// Begins the async call to list objects.The returned object is type of OssObjectSummary.
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <returns><see cref="OssObject" />list</returns>
/// <param name="callback">callback when the list is done</param>
/// <param name="state">state object in the callback</param>
/// <returns>IAsyncResult instance.</returns>
IAsyncResult BeginListObjects(string bucketName, AsyncCallback callback, object state);
/// <summary>
/// Lists object with specified prefix
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="prefix"><see cref="OssObject.Key" /> prefix</param>
/// <returns><see cref="OssObject" /> instances list</returns>
ObjectListing ListObjects(string bucketName, string prefix);
/// <summary>
/// Begins the async call to list objects under the specified bucket and prefix
/// The returned object is type of OssObjectSummary.
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="prefix"><see cref="OssObject.Key" /> prefix</param>
/// <returns><see cref="OssObject" /> list</returns>
/// <param name="callback">callback instance</param>
/// <param name="state">callback state</param>
/// <returns>IAsyncResult instance</returns>
IAsyncResult BeginListObjects(string bucketName, string prefix, AsyncCallback callback, object state);
/// <summary>
/// Lists objects according to the ListObjectsRequest.
/// The returned object is type of OssObjectSummary.
/// </summary>
/// <param name="listObjectsRequest"><see cref="ListObjectsRequest" /> instance</param>
/// <returns><see cref="OssObject" /> list</returns>
ObjectListing ListObjects(ListObjectsRequest listObjectsRequest);
/// <summary>
/// Begins the async call to list objects under the specified <see cref="Bucket" /> with specified filters in <see cref="ListObjectsRequest" />
/// </summary>
/// <param name="listObjectsRequest"><see cref="ListObjectsRequest"/> instance</param>
/// <returns><see cref="OssObject" /> list</returns>
/// <param name="callback">callback instance</param>
/// <param name="state">callback state object</param>
IAsyncResult BeginListObjects(ListObjectsRequest listObjectsRequest, AsyncCallback callback, Object state);
/// <summary>
/// Ends the async call of listing objects.
/// </summary>
/// <param name="asyncResult">The asyncResult instance returned by BeginListObjects call</param>
/// <returns><see cref="ObjectListing"/> instance</returns>
ObjectListing EndListObjects(IAsyncResult asyncResult);
/// <summary>
/// Lists object vesions according to the ListObjectVersionsRequest.
/// The returned object is type of OssObjectSummary.
/// </summary>
/// <param name="listObjectVersionsRequest"><see cref="ListObjectVersionsRequest" /> instance</param>
/// <returns><see cref="OssObject" /> list</returns>
ObjectVersionList ListObjectVersions(ListObjectVersionsRequest listObjectVersionsRequest);
/// <summary>
/// Puts object to the specified bucket with specified object key.
/// </summary>
/// <param name="bucketName">specified bucket name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <param name="content"><see cref="OssObject.Content" /></param>
/// <returns><see cref="PutObjectResult" /> instance</returns>
PutObjectResult PutObject(string bucketName, string key, Stream content);
/// <summary>
/// Begins the async call of uploading object to specified bucket.
/// </summary>
/// <param name="bucketName">target <see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <param name="content"><see cref="OssObject.Content" /></param>
/// <param name="callback">callback instance</param>
/// <param name="state">callback state</param>
/// <returns>The IAsyncResult instance for EndPutObject()</returns>
IAsyncResult BeginPutObject(string bucketName, string key, Stream content,
AsyncCallback callback, Object state);
/// <summary>
/// Uploads the content to object under the specified bucket and object key.
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <param name="content"><see cref="OssObject.Content" /></param>
/// <param name="metadata"><see cref="OssObject" /> metadata</param>
/// <returns><see cref="PutObjectResult" /> instance</returns>
PutObjectResult PutObject(string bucketName, string key, Stream content, ObjectMetadata metadata);
/// <summary>
/// Upload a <see cref="OssObject" /> according to <see cref="PutObjectRequest" />.
/// </summary>
/// <param name="putObjectRequest"><see cref="PutObjectRequest" />instance</param>
/// <returns><see cref="PutObjectResult" />instance</returns>
PutObjectResult PutObject(PutObjectRequest putObjectRequest);
/// <summary>
/// Begins the async call to upload object
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <param name="content"><see cref="OssObject.Content" /></param>
/// <param name="metadata"><see cref="OssObject" /> metadata</param>
/// <param name="callback">callback instance</param>
/// <param name="state">callback state</param>
/// <returns>IAsyncResult instance for EndPutObject()</returns>
IAsyncResult BeginPutObject(string bucketName, string key, Stream content, ObjectMetadata metadata,
AsyncCallback callback, Object state);
/// <summary>
/// Begins the async call to upload object
/// </summary>
/// <param name="putObjectRequest"><see cref="PutObjectRequest" /> instance</param>
/// <param name="callback">callback object</param>
/// <param name="state">state object</param>
/// <returns>IAsyncResult instance for EndPutObject()</returns>
IAsyncResult BeginPutObject(PutObjectRequest putObjectRequest, AsyncCallback callback, object state);
/// <summary>
/// Uploads a local file to OSS under the specified bucket
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <param name="fileToUpload">local file path to upload</param>
/// <returns><see cref="PutObjectResult" /> instance</returns>
PutObjectResult PutObject(string bucketName, string key, string fileToUpload);
/// <summary>
/// Begins the async call to upload local file to OSS under the specified bucket.
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <param name="fileToUpload">local file path to upload</param>
/// <param name="callback">callback instance</param>
/// <param name="state">callback state</param>
/// <returns>IAyncResult instance</returns>
IAsyncResult BeginPutObject(string bucketName, string key, string fileToUpload,
AsyncCallback callback, Object state);
/// <summary>
/// Uploads a local file with specified metadata to OSS.
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <param name="fileToUpload">local file path</param>
/// <param name="metadata"><see cref="OssObject" />metadata</param>
/// <returns><see cref="PutObjectResult" /> instance</returns>
PutObjectResult PutObject(string bucketName, string key, string fileToUpload, ObjectMetadata metadata);
/// <summary>
/// Begins the async call to upload object with specified metadata.
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <param name="fileToUpload">local file to upload</param>
/// <param name="metadata"><see cref="OssObject" /> metadata</param>
/// <param name="callback">callback instance</param>
/// <param name="state">callback state</param>
/// <returns>IAsyncResult instance for EndPutObject</returns>
IAsyncResult BeginPutObject(string bucketName, string key, string fileToUpload, ObjectMetadata metadata,
AsyncCallback callback, Object state);
/// <summary>
/// Ends the async call to upload the object.
/// When it's called, the actual upload has already been done.
/// </summary>
/// <param name="asyncResult">IAsyncResult instance</param>
/// <returns><see cref="PutObjectResult"/> instance</returns>
PutObjectResult EndPutObject(IAsyncResult asyncResult);
/// <summary>
/// Deprecated method.Please use ResumableUploadObject.
/// Uploads the specified file with optional part size.
/// If the file size is not bigger than the part size, then use normal file upload.
/// Otherwise use multipart upload.
/// </summary>
/// <param name="bucketName">bucket name</param>
/// <param name="key">target object key</param>
/// <param name="fileToUpload">local file path to upload</param>
/// <param name="metadata"><see cref="OssObject" /> metadata</param>
/// <param name="partSize">Part size.If it's not specified, then use <see cref="Util.OssUtils.DefaultPartSize"/>.
/// If the part size is less than <see cref="Util.OssUtils.PartSizeLowerLimit"/>, it will be changed to <see cref="Util.OssUtils.PartSizeLowerLimit"/> automatically.
/// </param>
/// <returns><see cref="PutObjectResult" /> instance</returns>
[Obsolete("PutBigObject is deprecated, please use ResumableUploadObject instead")]
PutObjectResult PutBigObject(string bucketName, string key, string fileToUpload, ObjectMetadata metadata, long? partSize = null);
/// <summary>
/// Deprecated method. Use ResumableUploadObject instead.
/// Upload the specified file to OSS.
/// If the file size is same or less than the part size, use normal file upload instead.
/// Otherwise it will use multipart file upload.
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <param name="content"><see cref="OssObject.Content" /></param>
/// <param name="metadata"><see cref="OssObject" /> metadata</param>
/// <param name="partSize">Part size. If it's not specified or the value is less than <see cref="Util.OssUtils.PartSizeLowerLimit"/>,
/// then use <see cref="Util.OssUtils.DefaultPartSize"/> instead.
/// </param>
/// <returns><see cref="PutObjectResult" /> instance</returns>
[Obsolete("PutBigObject is deprecated, please use ResumableUploadObject instead")]
PutObjectResult PutBigObject(string bucketName, string key, Stream content, ObjectMetadata metadata, long? partSize = null);
/// <summary>
/// Uploads the file via the signed url.
/// </summary>
/// <param name="signedUrl">Signed url</param>
/// <param name="fileToUpload">File to upload</param>
/// <returns><see cref="PutObjectResult" /> instance</returns>
PutObjectResult PutObject(Uri signedUrl, string fileToUpload);
/// <summary>
/// Uploads the instream via the signed url.
/// </summary>
/// <param name="signedUrl">Signed url</param>
/// <param name="content">content stream</param>
/// <returns><see cref="PutObjectResult" /> instance</returns>
PutObjectResult PutObject(Uri signedUrl, Stream content);
/// <summary>
/// Uploads the file via the signed url with the metadata.
/// </summary>
/// <param name="signedUrl">The signed url</param>
/// <param name="fileToUpload">Local file path</param>
/// <returns><see cref="PutObjectResult" /> instance</returns>
/// <param name="metadata"><see cref="OssObject" /> metadata</param>
PutObjectResult PutObject(Uri signedUrl, string fileToUpload, ObjectMetadata metadata);
/// <summary>
/// Uploads the stream via the signed url with the metadata.
/// </summary>
/// <param name="signedUrl">Signed url</param>
/// <param name="content">content stream</param>
/// <returns><see cref="PutObjectResult" /> instance</returns>
/// <param name="metadata"><see cref="OssObject" /> metadata</param>
PutObjectResult PutObject(Uri signedUrl, Stream content, ObjectMetadata metadata);
/// <summary>
/// Resumable file upload. It automaticlly uses multipart upload upon big file and also support resume upload after a failed upload.
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> instance</param>
/// <param name="key"><see cref="OssObject.Key" /> instance</param>
/// <param name="fileToUpload">file to upload</param>
/// <param name="metadata"><see cref="OssObject" /> metadata</param>
/// <param name="checkpointDir">Check point dir. If it's not specified, then no checkpoint file is saved and thus resumable file upload is not supported.</param>
/// <param name="partSize">Part size. If it's not specified, or the size is smaller than <see cref="Util.OssUtils.PartSizeLowerLimit"/>
/// then <see cref="Util.OssUtils.DefaultPartSize"/> is used instead.
/// </param>
/// <returns><see cref="PutObjectResult" /> instance </returns>
PutObjectResult ResumableUploadObject(string bucketName, string key, string fileToUpload, ObjectMetadata metadata, string checkpointDir, long? partSize = null,
EventHandler<StreamTransferProgressArgs> streamTransferProgress = null);
/// <summary>
/// Resumable file upload. It automaticlly uses multipart upload upon big file and also support resume upload after a failed upload.
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <param name="content"><see cref="OssObject.Content" />. Content is disposed after the call finishes.</param>
/// <param name="metadata"><see cref="OssObject" /> metadata</param>
/// <param name="checkpointDir">Check point dir. If it's not specified, then no checkpoint file is saved and thus resumable file upload is not supported.</param>
/// <param name="partSize">Part size. If it's not specified, or the size is smaller than <see cref="Util.OssUtils.PartSizeLowerLimit"/>
/// then <see cref="Util.OssUtils.DefaultPartSize"/> is used instead.
/// </param>
/// <returns><see cref="PutObjectResult" /> instance</returns>
PutObjectResult ResumableUploadObject(string bucketName, string key, Stream content, ObjectMetadata metadata, string checkpointDir, long? partSize = null,
EventHandler<StreamTransferProgressArgs> streamTransferProgress = null);
/// <summary>
/// Resumables the upload object.
/// The request.UploadStream will be disposed once the call finishes.
/// </summary>
/// <returns>The upload object.</returns>
/// <param name="request">Upload Request.</param>
PutObjectResult ResumableUploadObject(UploadObjectRequest request);
/// <summary>
/// Appends object to OSS according to the <see cref="AppendObjectRequest" />
/// </summary>
/// <param name="request"><see cref="AppendObjectRequest" /> instance</param>
/// <returns><see cref="AppendObjectResult" /> result</returns>
AppendObjectResult AppendObject(AppendObjectRequest request);
/// <summary>
/// Begins the async call to append object to OSS.
/// </summary>
/// <param name="request"><see cref="AppendObjectRequest" /> instance</param>
/// <param name="callback">callback instance</param>
/// <param name="state">state object</param>
/// <returns>IAsyncResut instance for EndAppendObject call</returns>
IAsyncResult BeginAppendObject(AppendObjectRequest request, AsyncCallback callback, Object state);
/// <summary>
/// Ends the async call to append object to OSS. WHen it's called, the actual upload has been done.
/// </summary>
/// <param name="asyncResult">The IAsyncResult instance returned from BeginAppendObjet</param>
/// <returns><see cref="AppendObjectResult"/> instance</returns>
AppendObjectResult EndAppendObject(IAsyncResult asyncResult);
/// <summary>
/// Creates the symlink of the target object
/// </summary>
/// <param name="bucketName">Bucket name.</param>
/// <param name="symlink">Symlink.</param>
/// <param name="target">Target.</param>
/// <returns><see cref="CreateSymlinkResult"/> instance</returns>
CreateSymlinkResult CreateSymlink(string bucketName, string symlink, string target);
/// <summary>
/// Creates the symlink of the target object
/// </summary>
/// <param name="createSymlinkRequest">Create symlink request.</param>
/// <returns><see cref="CreateSymlinkResult"/> instance</returns>
CreateSymlinkResult CreateSymlink(CreateSymlinkRequest createSymlinkRequest);
/// <summary>
/// Gets the target file of the symlink.
/// </summary>
/// <param name="bucketName">Bucket name.</param>
/// <param name="symlink">Symlink </param>
/// <returns>OssSymlink object</returns>
OssSymlink GetSymlink(string bucketName, string symlink);
/// <summary>
/// Gets the target file of the symlink.
/// </summary>
/// <param name="getSymlinkRequest">Get symlink request.</param>
/// <returns>OssSymlink object</returns>
OssSymlink GetSymlink(GetSymlinkRequest getSymlinkRequest);
/// <summary>
/// Gets object
/// </summary>
/// <param name="bucketName">bucket name</param>
/// <param name="key"><see cref="OssObject.Key"/></param>
/// <returns><see cref="OssObject" /> instance</returns>
OssObject GetObject(string bucketName, string key);
/// <summary>
/// Gets object via signed url
/// </summary>
/// <param name="signedUrl">The signed url of HTTP GET method</param>
/// <returns><see cref="OssObject"/> instance</returns>
OssObject GetObject(Uri signedUrl);
/// <summary>
/// Gets object via the bucket name and key name in the <see cref="GetObjectRequest" /> instance.
/// </summary>
/// <param name="getObjectRequest"> The request parameter</param>
/// <returns><see cref="OssObject" /> instance. The caller needs to dispose the object.</returns>
OssObject GetObject(GetObjectRequest getObjectRequest);
/// <summary>
/// Begins the async call to get object according to the <see cref="GetObjectRequest"/> instance.
/// </summary>
/// <param name="getObjectRequest"> request parameter</param>
/// <param name="callback">callback instance</param>
/// <param name="state">callback state</param>
/// <returns>IAsyncResult instance for EndGetObject()</returns>
IAsyncResult BeginGetObject(GetObjectRequest getObjectRequest, AsyncCallback callback, Object state);
/// <summary>
/// Begins the async call to get object by the bucket and key information.
/// </summary>
/// <param name="bucketName">bucket name</param>
/// <param name="key">object key</param>
/// <param name="callback">callback instance</param>
/// <param name="state">state instance</param>
/// <returns>ISyncResult instance</returns>
IAsyncResult BeginGetObject(string bucketName, string key, AsyncCallback callback, Object state);
/// <summary>
/// Ends the async call to get the object.
/// </summary>
/// <param name="asyncResult">The AsyncResult instance returned from BeginGetObject()</param>
/// <returns><see cref="OssObject"/> instance</returns>
OssObject EndGetObject(IAsyncResult asyncResult);
/// <summary>
/// Gets the object and assign the data to the stream.
/// </summary>
/// <param name="getObjectRequest">request parameter</param>
/// <param name="output">output stream</param>
/// <returns><see cref="OssObject" /> metadata</returns>
ObjectMetadata GetObject(GetObjectRequest getObjectRequest, Stream output);
/// <summary>
/// Download a file.
/// Internally it may use multipart download in case the file is big
/// </summary>
/// <returns>The metadata object</returns>
/// <param name="request">DownloadObjectRequest instance</param>
ObjectMetadata ResumableDownloadObject(DownloadObjectRequest request);
/// <summary>
/// Gets <see cref="OssObject" /> metadata.
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <returns><see cref="OssObject" />metadata</returns>
ObjectMetadata GetObjectMetadata(string bucketName, string key);
/// <summary>
/// Gets <see cref="OssObject" /> metadata.
/// </summary>
/// <param name="request">GetObjectMetadataRequest instance</param>
/// <returns><see cref="OssObject" />metadata</returns>
ObjectMetadata GetObjectMetadata(GetObjectMetadataRequest request);
/// <summary>
/// Gets <see cref="OssObject" /> metadata.
/// </summary>
/// <param name="request">GetObjectMetadataRequest instance</param>
/// <returns><see cref="OssObject" />metadata</returns>
ObjectMetadata GetSimplifiedObjectMetadata(GetObjectMetadataRequest request);
/// <summary>
/// Deletes <see cref="OssObject" />
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <returns><see cref="DeleteObjectResult" />instance</returns>
DeleteObjectResult DeleteObject(string bucketName, string key);
/// <summary>
/// Deletes <see cref="OssObject" />
/// </summary>
/// <param name="deleteObjectRequest">the request parameter</param>
/// <returns><see cref="DeleteObjectResult" />instance</returns>
DeleteObjectResult DeleteObject(DeleteObjectRequest deleteObjectRequest);
/// <summary>
/// Deletes multiple objects
/// </summary>
/// <param name="deleteObjectsRequest">the request parameter</param>
/// <returns>delete object result</returns>
DeleteObjectsResult DeleteObjects(DeleteObjectsRequest deleteObjectsRequest);
/// <summary>
/// Deletes multiple objects with version id
/// </summary>
/// <param name="deleteObjectVersionsRequest">the request parameter</param>
/// <returns>delete object result</returns>
DeleteObjectVersionsResult DeleteObjectVersions(DeleteObjectVersionsRequest deleteObjectVersionsRequest);
/// <summary>
/// copy an object to another one in OSS.
/// </summary>
/// <param name="copyObjectRequst">The request parameter</param>
/// <returns>copy object result</returns>
CopyObjectResult CopyObject(CopyObjectRequest copyObjectRequst);
/// <summary>
/// Begins the async call to copy an object
/// </summary>
/// <param name="copyObjectRequst">the request parameter</param>
/// <param name="callback">callback instance</param>
/// <param name="state">callback state</param>
/// <returns>The IAsyncResult instance for EndCopyObject()</returns>
IAsyncResult BeginCopyObject(CopyObjectRequest copyObjectRequst, AsyncCallback callback, Object state);
/// <summary>
/// Ends the async call to copy an object.
/// </summary>
/// <param name="asyncResult">The IAsyncResult instance returned from BeginCopyObject()</param>
/// <returns><see cref="CopyObjectResult"/> instance</returns>
CopyObjectResult EndCopyResult(IAsyncResult asyncResult);
/// <summary>
/// Deprecated. Use ResumableCopyObject instead.
/// Copy the specified file with optional checkpoint support.
/// </summary>
/// <param name="copyObjectRequest">the request parameter</param>
/// <param name="partSize">part size. If the part size is not specified, or less than <see cref="Util.OssUtils.DefaultPartSize"/>,
/// <see cref="Util.OssUtils.PartSizeLowerLimit"/> will be used instead.
/// </param>
/// <param name="checkpointDir">The checkpoint file folder. If it's not specified, checkpoint information is not stored and resumnable upload will not be supported in this case.</param>
/// <returns><see cref="CopyObjectResult" /> instance.</returns>
[Obsolete("CopyBigObject is deprecated, please use ResumableCopyObject instead")]
CopyObjectResult CopyBigObject(CopyObjectRequest copyObjectRequest, long? partSize = null, string checkpointDir = null);
/// <summary>
/// Resumable object copy.
/// If the file size is less than part size, normal file upload is used; otherwise multipart upload is used.
/// </summary>
/// <param name="copyObjectRequest">request parameter</param>
/// <param name="checkpointDir">checkpoint file folder </param>
/// <param name="partSize">The part size.
/// </param>
/// <returns><see cref="CopyObjectResult" /> instance</returns>
CopyObjectResult ResumableCopyObject(CopyObjectRequest copyObjectRequest, string checkpointDir, long? partSize = null);
/// <summary>
/// Modify the object metadata.
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <param name="newMeta">new metadata</param>
/// <param name="checkpointDir">check point folder. It must be specified to store the checkpoint information</param>
/// <param name="partSize">Part size, it's no less than <see cref="Util.OssUtils.DefaultPartSize"/>
/// </param>
void ModifyObjectMeta(string bucketName, string key, ObjectMetadata newMeta, long? partSize = null, string checkpointDir = null);
/// <summary>
/// Checks if the object exists
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <returns>true:object exists;false:otherwise</returns>
bool DoesObjectExist(string bucketName, string key);
/// <summary>
/// Sets the object ACL
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /> key</param>
/// <param name="acl"><see cref="CannedAccessControlList" /> instance</param>
void SetObjectAcl(string bucketName, string key, CannedAccessControlList acl);
/// <summary>
/// Sets the object ACL
/// </summary>
/// <param name="setObjectAclRequest"></param>
void SetObjectAcl(SetObjectAclRequest setObjectAclRequest);
/// <summary>
/// Gets the object ACL
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <returns><see cref="AccessControlList" /> instance</returns>
AccessControlList GetObjectAcl(string bucketName, string key);
/// <summary>
/// Gets the object ACL
/// </summary>
/// <param name="getObjectAclRequest"></param>
AccessControlList GetObjectAcl(GetObjectAclRequest getObjectAclRequest);
/// <summary>
/// Restores the object.
/// </summary>
/// <returns>The object.</returns>
/// <param name="bucketName">Bucket name.</param>
/// <param name="key">Key.</param>
RestoreObjectResult RestoreObject(string bucketName, string key);
/// <summary>
/// Restores the object.
/// </summary>
/// <returns>The object.</returns>
/// <param name="restoreObjectRequest"></param>
RestoreObjectResult RestoreObject(RestoreObjectRequest restoreObjectRequest);
/// <summary>
/// Sets the object tagging
/// </summary>
/// <param name="request"><see cref="SetObjectTaggingRequest" /> instance</param>
void SetObjectTagging(SetObjectTaggingRequest request);
/// <summary>
/// Gets the object tagging
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
/// <returns><see cref="GetObjectTaggingResult" /> instance</returns>
GetObjectTaggingResult GetObjectTagging(string bucketName, string key);
/// <summary>
/// Gets the object tagging
/// </summary>
/// <param name="request"><see cref="GetObjectTaggingRequest" /> instance</param>
/// <returns><see cref="GetObjectTaggingResult" /> instance</returns>
GetObjectTaggingResult GetObjectTagging(GetObjectTaggingRequest request);
/// <summary>
/// Deletes object tagging
/// </summary>
/// <param name="bucketName"><see cref="Bucket" /> name</param>
/// <param name="key"><see cref="OssObject.Key" /></param>
void DeleteObjectTagging(string bucketName, string key);
/// <summary>
/// Deletes the object tagging
/// </summary>
/// <param name="request"><see cref="DeleteObjectTaggingRequest" /> instance</param>
void DeleteObjectTagging(DeleteObjectTaggingRequest request);
/// <summary>
/// Gets the contents of a object based on a SQL statement.
/// </summary>
/// <param name="request"><see cref="SelectObjectRequest" /> instance</param>
OssObject SelectObject(SelectObjectRequest request);
/// <summary>
/// Creates the meta of a select object
/// </summary>
/// <param name="request"><see cref="CreateSelectObjectMetaRequest" /> instance</param>
CreateSelectObjectMetaResult CreateSelectObjectMeta(CreateSelectObjectMetaRequest request);
/// <summary>
/// Processes the object
/// </summary>
/// <param name="request"><see cref="ProcessObjectRequest" /> instance</param>
/// <returns><see cref="ProcessObjectRequest" /> instance</returns>
ProcessObjectResult ProcessObject(ProcessObjectRequest request);
#endregion
#region Generate URL
/// <summary>
/// Generates a signed url
/// </summary>
/// <param name="generatePresignedUriRequest">request parameter</param>
/// <returns>The signed url. The user could use this url to access the object directly</returns>
Uri GeneratePresignedUri(GeneratePresignedUriRequest generatePresignedUriRequest);
/// <summary>
/// Generates the signed url with default expiration time (15 min) that supports HTTP GET method.
/// </summary>
/// <param name="bucketName">Bucket name</param>
/// <param name="key">Object key</param>
/// <returns>Signed uri</returns>
Uri GeneratePresignedUri(string bucketName, string key);
/// <summary>
/// Generates the pre-signed GET url with specified expiration time
/// </summary>
/// <param name="bucketName">Bucket name</param>
/// <param name="key">Object key</param>
/// <param name="expiration">Uri expiration time</param>
/// <returns>signed url</returns>
Uri GeneratePresignedUri(string bucketName, string key, DateTime expiration);
/// <summary>
/// Generates the pre-signed url with specified expiration time that supports the specified HTTP method
/// </summary>
/// <param name="bucketName">Bucket name</param>
/// <param name="key">Object key</param>
/// <param name="method">HTTP method</param>
/// <returns>signed url</returns>
Uri GeneratePresignedUri(string bucketName, string key, SignHttpMethod method);
/// <summary>
/// Generates the presigned url with specified method and specified expiration time.
/// </summary>
/// <param name="bucketName">Bucket name</param>
/// <param name="key">Object key</param>
/// <param name="expiration">Uri expiration time</param>
/// <param name="method">HTTP method</param>
/// <returns>signed url</returns>
Uri GeneratePresignedUri(string bucketName, string key, DateTime expiration, SignHttpMethod method);
#endregion
#region Generate Post Policy
/// <summary>
/// Generates the post policy
/// </summary>
/// <param name="expiration">policy expiration time</param>
/// <param name="conds">policy conditions</param>
/// <returns>policy string</returns>
string GeneratePostPolicy(DateTime expiration, PolicyConditions conds);
#endregion
#region Multipart Operations
/// <summary>
/// Lists ongoing multipart uploads
/// </summary>
/// <param name="listMultipartUploadsRequest">request parameter</param>
/// <returns><see cref="MultipartUploadListing" /> instance</returns>
MultipartUploadListing ListMultipartUploads(ListMultipartUploadsRequest listMultipartUploadsRequest);
/// <summary>
/// Initiate a multipart upload
/// </summary>
/// <param name="initiateMultipartUploadRequest">request parameter</param>
/// <returns><see cref="InitiateMultipartUploadResult"/> instance</returns>
InitiateMultipartUploadResult InitiateMultipartUpload(InitiateMultipartUploadRequest initiateMultipartUploadRequest);
/// <summary>
/// Aborts a multipart upload
/// </summary>
/// <param name="abortMultipartUploadRequest">request parameter</param>
void AbortMultipartUpload(AbortMultipartUploadRequest abortMultipartUploadRequest);
/// <summary>
/// Uploads a part
/// </summary>
/// <param name="uploadPartRequest">request parameter</param>
/// <returns><see cref="UploadPartResult" /> instance</returns>
UploadPartResult UploadPart(UploadPartRequest uploadPartRequest);
/// <summary>
/// Begins the async call to upload a part
/// </summary>
/// <param name="uploadPartRequest">request parameter</param>
/// <param name="callback">callback instance</param>
/// <param name="state">callback state</param>
/// <returns>IAsyncResult instance for EndUploadPart()</returns>
IAsyncResult BeginUploadPart(UploadPartRequest uploadPartRequest, AsyncCallback callback, object state);
/// <summary>
/// Ends the async call to upload a part.
/// </summary>
/// <param name="asyncResult">IAsyncResult instance returned from BeginUploadPart()</param>
/// <returns><see cref="UploadPartResult" /> instance</returns>
UploadPartResult EndUploadPart(IAsyncResult asyncResult);
/// <summary>
/// Copy an existing object as one part of a multipart upload.
/// </summary>
/// <param name="uploadPartCopyRequest">request parameter</param>
/// <returns><see cref="UploadPartCopyResult"/> instance</returns>
UploadPartCopyResult UploadPartCopy(UploadPartCopyRequest uploadPartCopyRequest);
/// <summary>
/// Begins the async call to copy an existing object as one part of a multipart upload.
/// </summary>
/// <param name="uploadPartCopyRequest">request parameter</param>
/// <param name="callback">callback instance</param>
/// <param name="state">callback state</param>
/// <returns>IAsyncResult instance for EndUploadPartCopy()</returns>
IAsyncResult BeginUploadPartCopy(UploadPartCopyRequest uploadPartCopyRequest, AsyncCallback callback, object state);
/// <summary>
/// Ends the async call to copy an existing object as one part of a multipart upload.
/// </summary>
/// <param name="asyncResult">IAsyncResult instance</param>
/// <returns>The upload result</returns>
UploadPartCopyResult EndUploadPartCopy(IAsyncResult asyncResult);
/// <summary>
/// Lists successfully uploaded parts of a specific upload id
/// </summary>
/// <param name="listPartsRequest">request parameter</param>
/// <returns><see cref="PartListing" /> instance</returns>
PartListing ListParts(ListPartsRequest listPartsRequest);
/// <summary>
/// Completes a multipart upload.
/// </summary>
/// <param name="completeMultipartUploadRequest">the request parameter</param>
/// <returns><see cref="CompleteMultipartUploadResult" /> instance</returns>
CompleteMultipartUploadResult CompleteMultipartUpload(CompleteMultipartUploadRequest completeMultipartUploadRequest);
#endregion
#region Live Channel
/// <summary>
/// Creates a live channel
/// </summary>
/// <param name="request"><see cref="CreateLiveChannelRequest" /> instance</param>
/// <returns><see cref="CreateLiveChannelResult" /> instance</returns>
CreateLiveChannelResult CreateLiveChannel(CreateLiveChannelRequest request);
/// <summary>
/// Lists live channels
/// </summary>
/// <param name="request"><see cref="ListLiveChannelRequest" /> instance</param>
/// <returns><see cref="ListLiveChannelResult" /> instance</returns>
ListLiveChannelResult ListLiveChannel(ListLiveChannelRequest request);
/// <summary>
/// Deletes a live channel
/// </summary>
/// <param name="request"><see cref="DeleteLiveChannelRequest" /> instance</param>
void DeleteLiveChannel(DeleteLiveChannelRequest request);
/// <summary>
/// Sets the live channel status
/// </summary>
/// <param name="request"><see cref="SetLiveChannelStatusRequest" /> instance</param>
void SetLiveChannelStatus(SetLiveChannelStatusRequest request);
/// <summary>
/// Gets the live channel information
/// </summary>
/// <param name="request"><see cref="GetLiveChannelInfoRequest" /> instance</param>
/// <returns><see cref="GetLiveChannelInfoResult" /> instance</returns>
GetLiveChannelInfoResult GetLiveChannelInfo(GetLiveChannelInfoRequest request);
/// <summary>
/// Gets the live channel status
/// </summary>
/// <param name="request"><see cref="GetLiveChannelStatRequest" /> instance</param>
/// <returns><see cref="GetLiveChannelStatResult" /> instance</returns>
GetLiveChannelStatResult GetLiveChannelStat(GetLiveChannelStatRequest request);
/// <summary>
/// Gets the live channel history
/// </summary>
/// <param name="request"><see cref="GetLiveChannelHistoryRequest" /> instance</param>
/// <returns><see cref="GetLiveChannelHistoryResult" /> instance</returns>
GetLiveChannelHistoryResult GetLiveChannelHistory(GetLiveChannelHistoryRequest request);
/// <summary>
/// Creates a vod playlist
/// </summary>
/// <param name="request"><see cref="PostVodPlaylistRequest" /> instance</param>
void PostVodPlaylist(PostVodPlaylistRequest request);
/// <summary>
/// Gets a vod playlist
/// </summary>
/// <param name="request"><see cref="GetVodPlaylistRequest" /> instance</param>
/// <returns><see cref="GetVodPlaylistResult" /> instance</returns>
GetVodPlaylistResult GetVodPlaylist(GetVodPlaylistRequest request);
/// <summary>
/// Generates a rtmp signed url
/// </summary>
/// <param name="request"><see cref="GenerateRtmpPresignedUriRequest" /> instance</param>
/// <returns>The signed url. The user could use this url to push stream directly</returns>
Uri GenerateRtmpPresignedUri(GenerateRtmpPresignedUriRequest request);
#endregion
}
}