Show / Hide Table of Contents

Class StorageClient

Abstract class providing operations for Google Cloud Storage.

Inheritance
System.Object
StorageClient
StorageClientImpl
Implements
System.IDisposable
Inherited Members
System.Object.ToString()
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
Namespace: Google.Cloud.Storage.V1
Assembly: Google.Cloud.Storage.V1.dll
Syntax
public abstract class StorageClient : IDisposable
Remarks

This abstract class is provided to enable testability while permitting additional operations to be added in the future. See Create(GoogleCredential, EncryptionKey) and CreateAsync(GoogleCredential, EncryptionKey) to construct instances; alternatively, you can construct a StorageClientImpl directly from a StorageService.

All instance methods declared in this class are virtual, with an implementation which simply throws System.NotImplementedException. All these methods are overridden in StorageClientImpl.

This class implements System.IDisposable; however, the Dispose() method only requires calling if many short-lived instances of StorageClient are being created. Most code would be expected to create a single StorageClient instance, and use this instance throughout the lifetime of the application. In this case, Dispose need not be called.

Properties

EncryptionKey

The customer-supplied encryption key used by default for all relevant object-based operations. This can be overridden in call-specific options. This will never return null in the built-in implementation; if no encryption key is specified, None is returned.

Declaration
public virtual EncryptionKey EncryptionKey { get; }
Property Value
Type Description
EncryptionKey

Service

The underlying storage service object used by this client.

Declaration
public virtual StorageService Service { get; }
Property Value
Type Description
StorageService
Remarks

The StorageClient class only provides convenience operations built on top of an existing service object. Any more complex operations which are not supported by this wrapper may wish to use the same service object as the wrapper, in order to take advantage of its configuration (for authentication, application naming etc).

Methods

ClearBucketLabels(String, ModifyBucketLabelsOptions)

Clears all labels on a bucket.

Declaration
public virtual IDictionary<string, string> ClearBucketLabels(string bucket, ModifyBucketLabelsOptions options = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

ModifyBucketLabelsOptions options

The options for the operation. May be null, in which case defaults will be supplied.

Returns
Type Description
System.Collections.Generic.IDictionary<System.String, System.String>

A dictionary with the labels on the bucket before they were cleared.

Sample code
StorageClient client = StorageClient.Create();

IDictionary<string, string> oldLabels = client.ClearBucketLabels(bucketName);
Console.WriteLine($"Number of labels before clearing: {oldLabels.Count}");

ClearBucketLabelsAsync(String, ModifyBucketLabelsOptions, CancellationToken)

Clears all labels on a bucket asynchronously.

Declaration
public virtual Task<IDictionary<string, string>> ClearBucketLabelsAsync(string bucket, ModifyBucketLabelsOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

ModifyBucketLabelsOptions options

The options for the operation. May be null, in which case defaults will be supplied.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<System.Collections.Generic.IDictionary<System.String, System.String>>

A dictionary with the labels on the bucket before they were cleared.

Sample code

See ClearBucketLabels for a synchronous example.

CopyObject(String, String, String, String, CopyObjectOptions)

Creates a copy of an object synchronously, potentially to a different bucket. This method uses the rewriteObject underlying API operation for more flexibility and reliability.

Declaration
public virtual Object CopyObject(string sourceBucket, string sourceObjectName, string destinationBucket, string destinationObjectName, CopyObjectOptions options = null)
Parameters
Type Name Description
System.String sourceBucket

The name of the bucket containing the object to copy. Must not be null.

System.String sourceObjectName

The name of the object to copy within the bucket. Must not be null.

System.String destinationBucket

The name of the bucket to copy the object to. Must not be null.

System.String destinationObjectName

The name of the object within the destination bucket. Must not be null.

CopyObjectOptions options

Additional options for the copy operation. May be null, in which case appropriate defaults will be used.

Returns
Type Description
Object

The Object representation of the new storage object resulting from the copy.

Sample code
StorageClient client = StorageClient.Create();
string sourceName = "greetings/hello.txt";
string destinationName = "copy.txt";

// This method actually uses the "rewrite" API operation, for added reliability
// when copying large objects across locations, storage classes or encryption keys.
client.CopyObject(sourceBucket, sourceName, destinationBucket, destinationName);

CopyObjectAsync(String, String, String, String, CopyObjectOptions, CancellationToken)

Creates a copy of an object synchronously, potentially to a different bucket. This method uses the rewriteObject underlying API operation for more flexibility and reliability.

Declaration
public virtual Task<Object> CopyObjectAsync(string sourceBucket, string sourceObjectName, string destinationBucket = null, string destinationObjectName = null, CopyObjectOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String sourceBucket

The name of the bucket containing the object to copy. Must not be null.

System.String sourceObjectName

The name of the object to copy within the bucket. Must not be null.

System.String destinationBucket

The name of the bucket to copy the object to. Must not be null.

System.String destinationObjectName

The name of the object within the destination bucket. Must not be null.

CopyObjectOptions options

Additional options for the copy operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<Object>

A task representing the asynchronous operation, with a result returning the Object representation of the new storage object resulting from the copy.

Sample code

See CopyObject for a synchronous example.

Create(GoogleCredential, EncryptionKey)

Synchronously creates a StorageClient, using application default credentials if no credentials are specified.

Declaration
public static StorageClient Create(GoogleCredential credential = null, EncryptionKey encryptionKey = null)
Parameters
Type Name Description
GoogleCredential credential

Optional GoogleCredential.

EncryptionKey encryptionKey

Optional EncryptionKey to use for all relevant object-based operations by default. May be null.

Returns
Type Description
StorageClient

The created StorageClient.

Remarks

The credentials are scoped as necessary.

CreateAsync(GoogleCredential, EncryptionKey)

Asynchronously creates a StorageClient, using application default credentials if no credentials are specified.

Declaration
public static Task<StorageClient> CreateAsync(GoogleCredential credential = null, EncryptionKey encryptionKey = null)
Parameters
Type Name Description
GoogleCredential credential

Optional GoogleCredential.

EncryptionKey encryptionKey

Optional EncryptionKey to use for all relevant object-based operations by default. May be null.

Returns
Type Description
System.Threading.Tasks.Task<StorageClient>

The task representing the created StorageClient.

Remarks

The credentials are scoped as necessary.

CreateBucket(String, Bucket, CreateBucketOptions)

Creates a storage bucket synchronously.

Declaration
public virtual Bucket CreateBucket(string projectId, Bucket bucket, CreateBucketOptions options = null)
Parameters
Type Name Description
System.String projectId

The ID of the project to create the buckets in. Must not be null.

Bucket bucket

The resource representation of the bucket to create. Must not be null, and must have a name.

CreateBucketOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

Returns
Type Description
Bucket

The resource representation of the newly-created bucket.

Sample code

See CreateBucket for an example using an alternative overload.

CreateBucket(String, String, CreateBucketOptions)

Creates a storage bucket synchronously.

Declaration
public virtual Bucket CreateBucket(string projectId, string bucket, CreateBucketOptions options = null)
Parameters
Type Name Description
System.String projectId

The ID of the project to create the buckets in. Must not be null.

System.String bucket

The name of the bucket to create. Must not be null.

CreateBucketOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

Returns
Type Description
Bucket

The resource representation of the newly-created bucket.

Sample code
var client = StorageClient.Create();

// GCS bucket names must be globally unique
var bucketName = Guid.NewGuid().ToString();

// Bucket defined in Google.Apis.Storage.v1.Data namespace
var bucket = client.CreateBucket(projectId, bucketName);

CreateBucketAsync(String, Bucket, CreateBucketOptions, CancellationToken)

Creates a storage bucket asynchronously.

Declaration
public virtual Task<Bucket> CreateBucketAsync(string projectId, Bucket bucket, CreateBucketOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String projectId

The ID of the project to create the buckets in. Must not be null.

Bucket bucket

The resource representation of the bucket to create. Must not be null, and must have a name.

CreateBucketOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<Bucket>

A task representing the asynchronous operation, with a result returning the resource representation of the newly-created bucket.

Sample code

See CreateBucket for a synchronous example.

CreateBucketAsync(String, String, CreateBucketOptions, CancellationToken)

Creates a storage bucket asynchronously.

Declaration
public virtual Task<Bucket> CreateBucketAsync(string projectId, string bucket, CreateBucketOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String projectId

The ID of the project to create the buckets in. Must not be null.

System.String bucket

The name of the bucket to create. Must not be null.

CreateBucketOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<Bucket>

A task representing the asynchronous operation, with a result returning the resource representation of the newly-created bucket.

Sample code

See CreateBucket for a synchronous example.

CreateHmacKey(String, String, CreateHmacKeyOptions)

Synchronously creates a new HMAC key associated with a service account.

Declaration
public virtual HmacKey CreateHmacKey(string projectId, string serviceAccountEmail, CreateHmacKeyOptions options = null)
Parameters
Type Name Description
System.String projectId

The project ID in which to create the HMAC key. Must not be null.

System.String serviceAccountEmail

The service account to associate with the HMAC key. Must not be null.

CreateHmacKeyOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

Returns
Type Description
HmacKey

The new HMAC key, including the secret information in Secret. This secret is only ever returned when creating a key.

CreateHmacKeyAsync(String, String, CreateHmacKeyOptions, CancellationToken)

Asynchronously creates a new HMAC key associated with a service account.

Declaration
public virtual Task<HmacKey> CreateHmacKeyAsync(string projectId, string serviceAccountEmail, CreateHmacKeyOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String projectId

The project ID in which to create the HMAC key. Must not be null.

System.String serviceAccountEmail

The service account to associate with the HMAC key. Must not be null.

CreateHmacKeyOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<HmacKey>

A task representing the asynchronous operation, with a result returning the the new HMAC key, including the secret information in Secret. This secret is only ever returned when creating a key.

CreateNotification(String, Notification, CreateNotificationOptions)

Creates a notification configuration.

Declaration
public virtual Notification CreateNotification(string bucket, Notification notification, CreateNotificationOptions options = null)
Parameters
Type Name Description
System.String bucket

The bucket for which to create the notification configuration. Must not be null.

Notification notification

The notification configuration to create. Must not be null.

CreateNotificationOptions options

The options for the operation. May be null, in which case defaults will be supplied.

Returns
Type Description
Notification

The Notification representation of the newly-created notification configuration.

Sample code
TopicName topicName = new TopicName(projectId, topicId);
StorageClient client = StorageClient.Create();
Notification notification = new Notification
{
    Topic = $"//pubsub.googleapis.com/{topicName}",
    PayloadFormat = "JSON_API_V1"
};
notification = client.CreateNotification(bucket, notification);
Console.WriteLine($"Created notification ID: {notification.Id}");

CreateNotificationAsync(String, Notification, CreateNotificationOptions, CancellationToken)

Asynchronously creates a notification configuration.

Declaration
public virtual Task<Notification> CreateNotificationAsync(string bucket, Notification notification, CreateNotificationOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The bucket for which to create the notification configuration. Must not be null.

Notification notification

The notification configuration to create. Must not be null.

CreateNotificationOptions options

The options for the operation. May be null, in which case defaults will be supplied.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<Notification>

A task representing the asynchronous operation, with a result returning the Notification representation of the newly-created notification configuration.

Sample code

See CreateNotification for a synchronous example.

CreateObjectUploader(Object, Stream, UploadObjectOptions)

Creates an instance which is capable of starting a resumable upload for an object.

Declaration
public virtual ObjectsResource.InsertMediaUpload CreateObjectUploader(Object destination, Stream source, UploadObjectOptions options = null)
Parameters
Type Name Description
Object destination

Object to create or update. Must not be null, and must have the name, bucket and content type populated.

System.IO.Stream source

The stream to read the data from. Must not be null.

UploadObjectOptions options

Additional options for the upload. May be null, in which case appropriate defaults will be used.

Returns
Type Description
ObjectsResource.InsertMediaUpload

The ObjectsResource.InsertMediaUpload which can be used to upload the object.

See Also
UploadObject(Object, Stream, UploadObjectOptions, IProgress<IUploadProgress>)

CreateObjectUploader(String, String, String, Stream, UploadObjectOptions)

Creates an instance which is capable of starting a resumable upload for an object.

Declaration
public virtual ObjectsResource.InsertMediaUpload CreateObjectUploader(string bucket, string objectName, string contentType, Stream source, UploadObjectOptions options = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket containing the object. Must not be null.

System.String objectName

The name of the object within the bucket. Must not be null.

System.String contentType

The content type of the object. This should be a MIME type such as "text/html" or "application/octet-stream". May be null.

System.IO.Stream source

The stream to read the data from. Must not be null.

UploadObjectOptions options

Additional options for the upload. May be null, in which case appropriate defaults will be used.

Returns
Type Description
ObjectsResource.InsertMediaUpload

The ObjectsResource.InsertMediaUpload which can be used to upload the object.

See Also
UploadObject(Object, Stream, UploadObjectOptions, IProgress<IUploadProgress>)

CreateUnauthenticated()

Creates a StorageClient with no credentials. This can only be used in limited situations (where authentication isn't required), primarily downloading public data.

Declaration
public static StorageClient CreateUnauthenticated()
Returns
Type Description
StorageClient

The created StorageClient.

DeleteBucket(Bucket, DeleteBucketOptions)

Deletes a bucket synchronously.

Declaration
public virtual void DeleteBucket(Bucket bucket, DeleteBucketOptions options = null)
Parameters
Type Name Description
Bucket bucket

Bucket to delete. Must not be null, and must have the name populated.

DeleteBucketOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

Sample code

See DeleteBucket for an example using an alternative overload.

DeleteBucket(String, DeleteBucketOptions)

Deletes a bucket synchronously.

Declaration
public virtual void DeleteBucket(string bucket, DeleteBucketOptions options = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket to delete. Must not be null.

DeleteBucketOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

Sample code
var client = StorageClient.Create();

client.DeleteBucket(bucketName);

DeleteBucketAsync(Bucket, DeleteBucketOptions, CancellationToken)

Deletes bucket asynchronously.

Declaration
public virtual Task DeleteBucketAsync(Bucket bucket, DeleteBucketOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
Bucket bucket

Bucket to delete. Must not be null, and must have the name populated.

DeleteBucketOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task

A task representing the asynchronous operation.

Sample code

See DeleteBucket for a synchronous example.

DeleteBucketAsync(String, DeleteBucketOptions, CancellationToken)

Deletes a bucket asynchronously.

Declaration
public virtual Task DeleteBucketAsync(string bucket, DeleteBucketOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The name of the bucket to delete. Must not be null.

DeleteBucketOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task

A task representing the asynchronous operation.

Sample code

See DeleteBucket for a synchronous example.

DeleteHmacKey(String, String, DeleteHmacKeyOptions)

Synchronously deletes an HMAC key, which must already have been deactivated.

Declaration
public virtual void DeleteHmacKey(string projectId, string accessId, DeleteHmacKeyOptions options = null)
Parameters
Type Name Description
System.String projectId

The ID of the project containing the HMAC key to delete.

System.String accessId

The ID of the HMAC key to delete. Must not be null.

DeleteHmacKeyOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

DeleteHmacKeyAsync(String, String, DeleteHmacKeyOptions, CancellationToken)

Asynchronously deletes an HMAC key, which must already have been deactivated.

Declaration
public virtual Task DeleteHmacKeyAsync(string projectId, string accessId, DeleteHmacKeyOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String projectId

The ID of the project containing the HMAC key to delete.

System.String accessId

The ID of the HMAC key to delete. Must not be null.

DeleteHmacKeyOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task

A task representing the asynchronous operation.

DeleteNotification(String, String, DeleteNotificationOptions)

Deletes a notification configuration.

Declaration
public virtual void DeleteNotification(string bucket, string notificationId, DeleteNotificationOptions options = null)
Parameters
Type Name Description
System.String bucket

The bucket associated with the notification configuration. Must not be null.

System.String notificationId

ID of the notification configuration to delete. Must not be null.

DeleteNotificationOptions options

The options for the operation. May be null, in which case defaults will be supplied.

Sample code
StorageClient client = StorageClient.Create();
client.DeleteNotification(bucket, notificationId);

DeleteNotificationAsync(String, String, DeleteNotificationOptions, CancellationToken)

Asynchronously deletes a notification configuration.

Declaration
public virtual Task DeleteNotificationAsync(string bucket, string notificationId, DeleteNotificationOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The bucket associated with the notification configuration. Must not be null.

System.String notificationId

ID of the notification configuration to delete. Must not be null.

DeleteNotificationOptions options

The options for the operation. May be null, in which case defaults will be supplied.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task

A task representing the asynchronous operation.

Sample code

See DeleteNotification for a synchronous example.

DeleteObject(Object, DeleteObjectOptions)

Deletes a version of the specified object synchronously.

Declaration
public virtual void DeleteObject(Object obj, DeleteObjectOptions options = null)
Parameters
Type Name Description
Object obj

Object to delete. Must not be null, and must have the name and bucket populated.

DeleteObjectOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

Remarks

By default this will delete the latest version of the object, but this can be controlled using Generation. Note that any generation information contained within obj is ignored; the generation to delete is only controlled via options. For buckets that support multiple versions, implicitly deleting the latest version only archives it so the object is still available and can be listed by specifying Versions. If the version is explicitly specified, the object is permanently deleted.

If the bucket containing the object supports versioning, after this operation completes successfully there may still be another version of the same object. In buckets which do not support versioning, this operation will permanently delete the object.

If the request attempts to delete an object that does not exist or a specific version that does not exist, this counts as a failure with an HTTP status code of 404.

Sample code

See DeleteObject for an example using an alternative overload.

DeleteObject(String, String, DeleteObjectOptions)

Deletes a version of the specified object synchronously.

Declaration
public virtual void DeleteObject(string bucket, string objectName, DeleteObjectOptions options = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket containing the object. Must not be null.

System.String objectName

The name of the object within the bucket. Must not be null.

DeleteObjectOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

Remarks

By default this will delete the latest version of the object, but this can be controlled using Generation. For buckets that support multiple versions, implicitly deleting the latest version only archives it so the object is still available and can be listed by specifying Versions. If the version is explicitly specified, the object is permanently deleted.

If the bucket containing the object supports versioning, after this operation completes successfully there may still be another version of the same object. In buckets which do not support versioning, this operation will permanently delete the object.

If the request attempts to delete an object that does not exist or a specific version that does not exist, this counts as a failure with an HTTP status code of 404.

Sample code
var client = StorageClient.Create();
var objectName = "places/deleteme.txt";

client.DeleteObject(bucketName, objectName);

DeleteObjectAsync(Object, DeleteObjectOptions, CancellationToken)

Deletes a version of the specified object asynchronously.

Declaration
public virtual Task DeleteObjectAsync(Object obj, DeleteObjectOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
Object obj

Object to delete. Must not be null, and must have the name and bucket populated.

DeleteObjectOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task

A task representing the asynchronous operation.

Remarks

By default this will delete the latest version of the object, but this can be controlled using Generation. Note that any generation information contained within obj is ignored; the generation to delete is only controlled via options. For buckets that support multiple versions, implicitly deleting the latest version only archives it so the object is still available and can be listed by specifying Versions. If the version is explicitly specified, the object is permanently deleted.

If the bucket containing the object supports versioning, after this operation completes successfully there may still be another version of the same object. In buckets which do not support versioning, this operation will permanently delete the object.

If the request attempts to delete an object that does not exist or a specific version that does not exist, this counts as a failure with an HTTP status code of 404.

Sample code

See DeleteObject for a synchronous example.

DeleteObjectAsync(String, String, DeleteObjectOptions, CancellationToken)

Deletes a version of the specified object asynchronously.

Declaration
public virtual Task DeleteObjectAsync(string bucket, string objectName, DeleteObjectOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The name of the bucket containing the object. Must not be null.

System.String objectName

The name of the object within the bucket. Must not be null.

DeleteObjectOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task

A task representing the asynchronous operation.

Remarks

By default this will delete the latest version of the object, but this can be controlled using Generation. For buckets that support multiple versions, implicitly deleting the latest version only archives it so the object is still available and can be listed by specifying Versions. If the version is explicitly specified, the object is permanently deleted.

If the bucket containing the object supports versioning, after this operation completes successfully there may still be another version of the same object. In buckets which do not support versioning, this operation will permanently delete the object.

If the request attempts to delete an object that does not exist or a specific version that does not exist, this counts as a failure with an HTTP status code of 404.

Sample code

See DeleteObject for a synchronous example.

Dispose()

Dispose of this instance. See the StorageClient remarks on when this should be called.

Declaration
public virtual void Dispose()
Implements
System.IDisposable.Dispose()

DownloadObject(Object, Stream, DownloadObjectOptions, IProgress<IDownloadProgress>)

Downloads the data for an object from storage synchronously, into a specified stream.

Declaration
public virtual void DownloadObject(Object source, Stream destination, DownloadObjectOptions options = null, IProgress<IDownloadProgress> progress = null)
Parameters
Type Name Description
Object source

Source object to download the data from. Must not be null.

System.IO.Stream destination

The stream to write the data into. Must not be null.

DownloadObjectOptions options

Additional options for the download. May be null, in which case appropriate defaults will be used.

System.IProgress<IDownloadProgress> progress

Progress reporter for the download. May be null.

Remarks

The generation number within source is ignored by this method. To download a specific generation, use Generation.

Sample code

See DownloadObject for an example using an alternative overload.

DownloadObject(String, String, Stream, DownloadObjectOptions, IProgress<IDownloadProgress>)

Downloads the data for an object from storage synchronously, into a specified stream.

Declaration
public virtual void DownloadObject(string bucket, string objectName, Stream destination, DownloadObjectOptions options = null, IProgress<IDownloadProgress> progress = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket containing the object. Must not be null.

System.String objectName

The name of the object within the bucket. Must not be null.

System.IO.Stream destination

The stream to write the data into. Must not be null.

DownloadObjectOptions options

Additional options for the download. May be null, in which case appropriate defaults will be used.

System.IProgress<IDownloadProgress> progress

Progress reporter for the download. May be null.

Sample code
var client = StorageClient.Create();
var source = "greetings/hello.txt";
var destination = "hello.txt";

using (var stream = File.Create(destination))
{
    // IDownloadProgress defined in Google.Apis.Download namespace
    var progress = new Progress<IDownloadProgress>(
        p => Console.WriteLine($"bytes: {p.BytesDownloaded}, status: {p.Status}")
    );

    // Download source object from bucket to local file system
    client.DownloadObject(bucketName, source, stream, null, progress);
}

DownloadObjectAsync(Object, Stream, DownloadObjectOptions, CancellationToken, IProgress<IDownloadProgress>)

Downloads the data for an object from storage asynchronously, into a specified stream.

Declaration
public virtual Task DownloadObjectAsync(Object source, Stream destination, DownloadObjectOptions options = null, CancellationToken cancellationToken = default(CancellationToken), IProgress<IDownloadProgress> progress = null)
Parameters
Type Name Description
Object source

Source object to download the data from. Must not be null.

System.IO.Stream destination

The stream to write the data into. Must not be null.

DownloadObjectOptions options

Additional options for the download. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

System.IProgress<IDownloadProgress> progress

Progress reporter for the download. May be null.

Returns
Type Description
System.Threading.Tasks.Task

A task representing the asynchronous operation.

Remarks

The generation number within source is ignored by this method. To download a specific generation, use Generation.

Sample code

See DownloadObject for a synchronous example.

DownloadObjectAsync(String, String, Stream, DownloadObjectOptions, CancellationToken, IProgress<IDownloadProgress>)

Downloads the data for an object from storage asynchronously, into a specified stream.

Declaration
public virtual Task DownloadObjectAsync(string bucket, string objectName, Stream destination, DownloadObjectOptions options = null, CancellationToken cancellationToken = default(CancellationToken), IProgress<IDownloadProgress> progress = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket containing the object. Must not be null.

System.String objectName

The name of the object within the bucket. Must not be null.

System.IO.Stream destination

The stream to write the data into. Must not be null.

DownloadObjectOptions options

Additional options for the download. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

System.IProgress<IDownloadProgress> progress

Progress reporter for the download. May be null.

Returns
Type Description
System.Threading.Tasks.Task

A task representing the asynchronous operation.

Sample code

See DownloadObject for a synchronous example.

GetBucket(String, GetBucketOptions)

Fetches the information about a bucket synchronously.

Declaration
public virtual Bucket GetBucket(string bucket, GetBucketOptions options = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

GetBucketOptions options

Additional options for the fetch operation. May be null, in which case appropriate defaults will be used.

Returns
Type Description
Bucket

The Bucket representation of the storage bucket.

Sample code
var client = StorageClient.Create();

var bucket = client.GetBucket(bucketName);
Console.WriteLine($"Name: {bucket.Name}");
Console.WriteLine($"TimeCreated: {bucket.TimeCreated}");

GetBucketAsync(String, GetBucketOptions, CancellationToken)

Fetches the information about a bucket asynchronously.

Declaration
public virtual Task<Bucket> GetBucketAsync(string bucket, GetBucketOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

GetBucketOptions options

Additional options for the fetch operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<Bucket>

A task representing the asynchronous operation, with a result returning the Bucket representation of the storage bucket.

Sample code

See GetBucket for a synchronous example.

GetBucketIamPolicy(String, GetBucketIamPolicyOptions)

Fetches the IAM policy information about a bucket synchronously.

Declaration
public virtual Policy GetBucketIamPolicy(string bucket, GetBucketIamPolicyOptions options = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

GetBucketIamPolicyOptions options

Additional options for the fetch operation. May be null, in which case appropriate defaults will be used.

Returns
Type Description
Policy

The Policy representation of the storage bucket IAM policy.

Sample code
StorageClient client = StorageClient.Create();

Policy policy = client.GetBucketIamPolicy(bucketName);
foreach (Policy.BindingsData binding in policy.Bindings)
{
    Console.WriteLine($"Role: {binding.Role}");
    foreach (var permission in binding.Members)
    {
        Console.WriteLine($"  {permission}");
    }
}

GetBucketIamPolicyAsync(String, GetBucketIamPolicyOptions, CancellationToken)

Fetches the IAM policy information about a bucket asynchronously.

Declaration
public virtual Task<Policy> GetBucketIamPolicyAsync(string bucket, GetBucketIamPolicyOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

GetBucketIamPolicyOptions options

Additional options for the fetch operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<Policy>

A task representing the asynchronous operation, with a result returning the Policy representation of the storage bucket IAM policy.

Sample code

See GetBucketIamPolicy for a synchronous example.

GetHmacKey(String, String, GetHmacKeyOptions)

Synchronously fetches metadata for the specified HMAC key.

Declaration
public virtual HmacKeyMetadata GetHmacKey(string projectId, string accessId, GetHmacKeyOptions options = null)
Parameters
Type Name Description
System.String projectId

The project containing the HMAC key. Must not be null.

System.String accessId

The ID of the HMAC key. Must not be null.

GetHmacKeyOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

Returns
Type Description
HmacKeyMetadata

The HMAC key metadata

GetHmacKeyAsync(String, String, GetHmacKeyOptions, CancellationToken)

Asynchronously fetches metadata for the specified HMAC key.

Declaration
public virtual Task<HmacKeyMetadata> GetHmacKeyAsync(string projectId, string accessId, GetHmacKeyOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String projectId

The project containing the HMAC key. Must not be null.

System.String accessId

The ID of the HMAC key. Must not be null.

GetHmacKeyOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<HmacKeyMetadata>

A task representing the asynchronous operation, with a result returning the HMAC key metadata.

GetNotification(String, String, GetNotificationOptions)

Fetches a notification configuration.

Declaration
public virtual Notification GetNotification(string bucket, string notificationId, GetNotificationOptions options = null)
Parameters
Type Name Description
System.String bucket

The bucket associated with the notification configuration. Must not be null.

System.String notificationId

ID of the notification configuration to fetch. Must not be null.

GetNotificationOptions options

The options for the operation. May be null, in which case defaults will be supplied.

Returns
Type Description
Notification

The Notification representation of the notification configuration.

Sample code
StorageClient client = StorageClient.Create();
Notification notification = client.GetNotification(bucket, notificationId);
Console.WriteLine($"ID: {notification.Id}");
Console.WriteLine($"Payload format: {notification.PayloadFormat}");
Console.WriteLine($"Topic: {notification.Topic}");
Console.WriteLine($"Prefix: {notification.ObjectNamePrefix}");
Console.WriteLine($"Event types: {string.Join(",", notification.EventTypes ?? new string[0])}");

GetNotificationAsync(String, String, GetNotificationOptions, CancellationToken)

Asynchronously fetches a notification configuration.

Declaration
public virtual Task<Notification> GetNotificationAsync(string bucket, string notificationId, GetNotificationOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The bucket associated with the notification configuration. Must not be null.

System.String notificationId

ID of the notification configuration to fetch. Must not be null.

GetNotificationOptions options

The options for the operation. May be null, in which case defaults will be supplied.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<Notification>

A task representing the asynchronous operation, with a result returning the Notification representation of the notification configuration.

Sample code

See GetNotification for a synchronous example.

GetObject(String, String, GetObjectOptions)

Fetches the information about an object synchronously.

Declaration
public virtual Object GetObject(string bucket, string objectName, GetObjectOptions options = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket containing the object. Must not be null.

System.String objectName

The name of the object within the bucket. Must not be null.

GetObjectOptions options

Additional options for the fetch operation. May be null, in which case appropriate defaults will be used.

Returns
Type Description
Object

The Object representation of the storage object.

Remarks

This does not retrieve the content of the object itself. Use DownloadObject(String, String, Stream, DownloadObjectOptions, IProgress<IDownloadProgress>) to download the content.

Sample code
var client = StorageClient.Create();
var name = "greetings/hello.txt";

var obj = client.GetObject(bucketName, name);
Console.WriteLine($"Name: {obj.Name}");
Console.WriteLine($"Size: {obj.Size}");
Console.WriteLine($"ContentType: {obj.ContentType}");
Console.WriteLine($"TimeCreated: {obj.TimeCreated}");

GetObjectAsync(String, String, GetObjectOptions, CancellationToken)

Fetches the information about an object asynchronously.

Declaration
public virtual Task<Object> GetObjectAsync(string bucket, string objectName, GetObjectOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The name of the bucket containing the object. Must not be null.

System.String objectName

The name of the object within the bucket. Must not be null.

GetObjectOptions options

Additional options for the fetch operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<Object>

A task representing the asynchronous operation, with a result returning the Object representation of the storage object.

Remarks

This does not retrieve the content of the object itself. Use DownloadObjectAsync(String, String, Stream, DownloadObjectOptions, CancellationToken, IProgress<IDownloadProgress>) to download the content.

Sample code

See GetObject for a synchronous example.

GetStorageServiceAccountEmail(String, GetStorageServiceAccountEmailOptions)

Retrieves the service account email address that Google Cloud Storage uses for operations on other services such as Google Cloud Pub/Sub.

Declaration
public virtual string GetStorageServiceAccountEmail(string projectId, GetStorageServiceAccountEmailOptions options = null)
Parameters
Type Name Description
System.String projectId

ID of the project to retrieve the service account for. Must not be null.

GetStorageServiceAccountEmailOptions options

The options for the operation. May be null, in which case defaults will be supplied.

Returns
Type Description
System.String

The email address of the service account.

Sample code
StorageClient client = StorageClient.Create();
string serviceAccountEmail = client.GetStorageServiceAccountEmail(projectId);
Console.WriteLine(serviceAccountEmail);

GetStorageServiceAccountEmailAsync(String, GetStorageServiceAccountEmailOptions, CancellationToken)

Asynchronously retrieves the service account email address that Google Cloud Storage uses for operations on other services such as Google Cloud Pub/Sub.

Declaration
public virtual Task<string> GetStorageServiceAccountEmailAsync(string projectId, GetStorageServiceAccountEmailOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String projectId

ID of the project to retrieve the service account for. Must not be null.

GetStorageServiceAccountEmailOptions options

The options for the operation. May be null, in which case defaults will be supplied.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<System.String>

A task representing the asynchronous operation, with a result returning the email address of the service account.

Sample code

See GetStorageServiceAccountEmail for a synchronous example.

ListBuckets(String, ListBucketsOptions)

Lists the buckets for a given project, synchronously but lazily.

Declaration
public virtual PagedEnumerable<Buckets, Bucket> ListBuckets(string projectId, ListBucketsOptions options = null)
Parameters
Type Name Description
System.String projectId

The ID of the project to list the buckets from. Must not be null.

ListBucketsOptions options

The options for the operation. May be null, in which case defaults will be supplied.

Returns
Type Description
PagedEnumerable<Buckets, Bucket>

A sequence of buckets within the project.

Remarks

This method fetches the buckets lazily, making requests to the underlying service for a page of results at a time, as required. No network requests are made until the returned sequence is enumerated. This means that any exception due to an invalid request will be deferred until that time. Callers should be prepared for exceptions to be thrown while enumerating the results. In addition to failures due to invalid requests, network or service failures can cause exceptions even after the first results have been returned.

Sample code
var client = StorageClient.Create();

// List all buckets associated with a project
var buckets = client.ListBuckets(projectId);

ListBucketsAsync(String, ListBucketsOptions)

Asynchronously lists the buckets in a given project.

Declaration
public virtual PagedAsyncEnumerable<Buckets, Bucket> ListBucketsAsync(string projectId, ListBucketsOptions options = null)
Parameters
Type Name Description
System.String projectId

The ID of the project to list the buckets from. Must not be null.

ListBucketsOptions options

The options for the operation. May be null, in which case defaults will be supplied.

Returns
Type Description
PagedAsyncEnumerable<Buckets, Bucket>

An asynchronous sequence of buckets.

Remarks

This method fetches the buckets lazily, making requests to the underlying service for a page of results at a time, as required. No network requests are made until the returned sequence is enumerated. This means that any exception due to an invalid request will be deferred until that time. Callers should be prepared for exceptions to be thrown while enumerating the results. In addition to failures due to invalid requests, network or service failures can cause exceptions even after the first results have been returned.

Sample code

See ListBuckets for a synchronous example.

ListHmacKeys(String, String, ListHmacKeysOptions)

Lists the HMAC keys in a given project, synchronously but lazily, optionally filtering by service account email address.

Declaration
public virtual PagedEnumerable<HmacKeysMetadata, HmacKeyMetadata> ListHmacKeys(string projectId, string serviceAccountEmail = null, ListHmacKeysOptions options = null)
Parameters
Type Name Description
System.String projectId

The project containing the HMAC keys. Must not be null.

System.String serviceAccountEmail

The service account email address to list keys for. May be null, in which case all HMAC keys associated with the project are returned.

ListHmacKeysOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

Returns
Type Description
PagedEnumerable<HmacKeysMetadata, HmacKeyMetadata>

A sequence of HMAC keys within the project.

Remarks

This method fetches the buckets lazily, making requests to the underlying service for a page of results at a time, as required. No network requests are made until the returned sequence is enumerated. This means that any exception due to an invalid request will be deferred until that time. Callers should be prepared for exceptions to be thrown while enumerating the results. In addition to failures due to invalid requests, network or service failures can cause exceptions even after the first results have been returned.

ListHmacKeysAsync(String, String, ListHmacKeysOptions)

Lists the HMAC keys in a given project, asynchronously and lazily, optionally filtering by service account email address.

Declaration
public virtual PagedAsyncEnumerable<HmacKeysMetadata, HmacKeyMetadata> ListHmacKeysAsync(string projectId, string serviceAccountEmail = null, ListHmacKeysOptions options = null)
Parameters
Type Name Description
System.String projectId

The project containing the HMAC keys. Must not be null.

System.String serviceAccountEmail

The service account email address to list keys for. May be null, in which case all HMAC keys associated with the project are returned.

ListHmacKeysOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

Returns
Type Description
PagedAsyncEnumerable<HmacKeysMetadata, HmacKeyMetadata>

An asynchronous sequence of HMAC keys within the project.

Remarks

This method fetches the buckets lazily, making requests to the underlying service for a page of results at a time, as required. No network requests are made until the returned sequence is enumerated. This means that any exception due to an invalid request will be deferred until that time. Callers should be prepared for exceptions to be thrown while enumerating the results. In addition to failures due to invalid requests, network or service failures can cause exceptions even after the first results have been returned.

ListNotifications(String, ListNotificationsOptions)

Lists notification configurations associated with a bucket.

Declaration
public virtual IReadOnlyList<Notification> ListNotifications(string bucket, ListNotificationsOptions options = null)
Parameters
Type Name Description
System.String bucket

The bucket for which to list associated notification configurations. Must not be null.

ListNotificationsOptions options

The options for the operation. May be null, in which case defaults will be supplied.

Returns
Type Description
System.Collections.Generic.IReadOnlyList<Notification>

A list of notification configurations associated with the specified bucket. This method never returns null.

Sample code
StorageClient client = StorageClient.Create();
IReadOnlyList<Notification> notifications = client.ListNotifications(bucket);
foreach (Notification notification in notifications)
{
    Console.WriteLine($"{notification.Id}: Topic={notification.Topic}; Prefix={notification.ObjectNamePrefix}");
}

ListNotificationsAsync(String, ListNotificationsOptions, CancellationToken)

Asynchronously lists notification configurations associated with a bucket.

Declaration
public virtual Task<IReadOnlyList<Notification>> ListNotificationsAsync(string bucket, ListNotificationsOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The bucket for which to list associated notification configurations. Must not be null.

ListNotificationsOptions options

The options for the operation. May be null, in which case defaults will be supplied.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<System.Collections.Generic.IReadOnlyList<Notification>>

A task representing the asynchronous operation, with a result returning the list of notification configurations associated with the specified bucket. The result is never null.

Sample code

See ListNotifications for a synchronous example.

ListObjects(String, String, ListObjectsOptions)

Lists the objects in a given bucket, synchronously but lazily.

Declaration
public virtual PagedEnumerable<Objects, Object> ListObjects(string bucket, string prefix = null, ListObjectsOptions options = null)
Parameters
Type Name Description
System.String bucket

The bucket to list the objects from. Must not be null.

System.String prefix

The prefix to match. Only objects with names that start with this string will be returned. This parameter may be null or empty, in which case no filtering is performed.

ListObjectsOptions options

The options for the operation. May be null, in which case defaults will be supplied.

Returns
Type Description
PagedEnumerable<Objects, Object>

A sequence of objects in the specified bucket.

Remarks

This method fetches the objects lazily, making requests to the underlying service for a page of results at a time, as required. No network requests are made until the returned sequence is enumerated. This means that any exception due to an invalid request will be deferred until that time. Callers should be prepared for exceptions to be thrown while enumerating the results. In addition to failures due to invalid requests, network or service failures can cause exceptions even after the first results have been returned.

Sample code
var client = StorageClient.Create();

// List only objects with a name starting with "greet"
var objects = client.ListObjects(bucketName, "greet");

ListObjectsAsync(String, String, ListObjectsOptions)

Asynchronously lists the objects in a given bucket.

Declaration
public virtual PagedAsyncEnumerable<Objects, Object> ListObjectsAsync(string bucket, string prefix = null, ListObjectsOptions options = null)
Parameters
Type Name Description
System.String bucket

The bucket to list the objects from. Must not be null.

System.String prefix

The prefix to match. Only objects with names that start with this string will be returned. This parameter may be null or empty, in which case no filtering is performed.

ListObjectsOptions options

The options for the operation. May be null, in which case defaults will be supplied.

Returns
Type Description
PagedAsyncEnumerable<Objects, Object>

An asynchronous sequence of objects in the specified bucket.

Remarks

This method fetches the objects lazily, making requests to the underlying service for a page of results at a time, as required. No network requests are made until the returned sequence is enumerated. This means that any exception due to an invalid request will be deferred until that time. Callers should be prepared for exceptions to be thrown while enumerating the results. In addition to failures due to invalid requests, network or service failures can cause exceptions even after the first results have been returned.

Sample code

See ListObjects for a synchronous example.

LockBucketRetentionPolicy(String, Int64, LockBucketRetentionPolicyOptions)

Locks the retention policy of a bucket. This is a one-way process: once a retention policy is locked, it cannot be shortened, removed or unlocked, although it can be increased in duration. The lock persists until the bucket is deleted.

Declaration
public virtual void LockBucketRetentionPolicy(string bucket, long metageneration, LockBucketRetentionPolicyOptions options = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket whose retention policy should be locked. Must not be null.

System.Int64 metageneration

The current metageneration of the bucket, used to validate that the bucket version to be locked is the intended one.

LockBucketRetentionPolicyOptions options

The options for the operation. May be null, in which case defaults will be supplied.

Sample code
var client = StorageClient.Create();
var bucketName = Guid.NewGuid().ToString();

// Create a bucket and set its retention policy
Bucket bucket = client.CreateBucket(projectId, bucketName);
// Retention period is specified in seconds.
bucket.RetentionPolicy = new Bucket.RetentionPolicyData { RetentionPeriod = 60 };
bucket = client.UpdateBucket(bucket);

// Once the retention policy is locked, it can't be shortened, removed or unlocked.
// It will be locked until the bucket is deleted.
client.LockBucketRetentionPolicy(bucketName, bucket.Metageneration.Value);

LockBucketRetentionPolicyAsync(String, Int64, LockBucketRetentionPolicyOptions, CancellationToken)

Asynchronously locks the retention policy of a bucket. This is a one-way process: once a retention policy is locked, it cannot be shortened, removed or unlocked, although it can be increased in duration. The lock persists until the bucket is deleted.

Declaration
public virtual Task LockBucketRetentionPolicyAsync(string bucket, long metageneration, LockBucketRetentionPolicyOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The name of the bucket whose retention policy should be locked. Must not be null.

System.Int64 metageneration

The current metageneration of the bucket, used to validate that the bucket version to be locked is the intended one.

LockBucketRetentionPolicyOptions options

The options for the operation. May be null, in which case defaults will be supplied.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task

A task representing the asynchronous operation.

Sample code

See LockBucketRetentionPolicy for a synchronous example.

ModifyBucketLabels(String, IDictionary<String, String>, ModifyBucketLabelsOptions)

Sets or removes one or more labels on a bucket.

Declaration
public virtual IDictionary<string, string> ModifyBucketLabels(string bucket, IDictionary<string, string> labels, ModifyBucketLabelsOptions options = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

System.Collections.Generic.IDictionary<System.String, System.String> labels

The labels to set. Must contain at least one entry; keys must not be null, but values may be (indicating label removal).

ModifyBucketLabelsOptions options

The options for the operation. May be null, in which case defaults will be supplied.

Returns
Type Description
System.Collections.Generic.IDictionary<System.String, System.String>

A dictionary with the same keys as labels, and values indicating the corresponding label value before this operation completed. Labels which weren't present on the bucket before the modification have corresponding null values in the returned dictionary.

Remarks

Each entry in labels is treated as a label to set or remove. If the value is null, it will be removed from the bucket; otherwise, it will be set/added. Labels which do not have an entry in the dictionary will be ignored.

Sample code
StorageClient client = StorageClient.Create();

string now = DateTime.UtcNow.ToString("yyyy-MM-dd_HH-mm-ss", CultureInfo.InvariantCulture);
IDictionary<string, string> labelChanges = new Dictionary<string, string>
{
    { "label1", "new_value_1_" + now },
    { "label2", "new_value_2_" + now },
};

IDictionary<string, string> oldValues = client.ModifyBucketLabels(bucketName, labelChanges);
Console.WriteLine("Old values for changed labels:");
foreach (KeyValuePair<string, string> entry in oldValues)
{
    Console.WriteLine($"  {entry.Key}: {entry.Value}");
}
Console.WriteLine("All labels:");
IDictionary<string, string> allLabels = client.GetBucket(bucketName).Labels ?? new Dictionary<string, string>();
foreach (KeyValuePair<string, string> entry in allLabels)
{
    Console.WriteLine($"  {entry.Key}: {entry.Value}");
}

ModifyBucketLabelsAsync(String, IDictionary<String, String>, ModifyBucketLabelsOptions, CancellationToken)

Sets or removes one or more labels on a bucket asynchronously.

Declaration
public virtual Task<IDictionary<string, string>> ModifyBucketLabelsAsync(string bucket, IDictionary<string, string> labels, ModifyBucketLabelsOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

System.Collections.Generic.IDictionary<System.String, System.String> labels

The labels to set. Must contain at least one entry; keys must not be null, but values may be (indicating label removal).

ModifyBucketLabelsOptions options

The options for the operation. May be null, in which case defaults will be supplied.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<System.Collections.Generic.IDictionary<System.String, System.String>>

A dictionary with the same keys as labels, and values indicating the corresponding label value before this operation completed. Labels which weren't present on the bucket before the modification have corresponding null values in the returned dictionary.

Remarks

Each entry in labels is treated as a label to set or remove. If the value is null, it will be removed from the bucket; otherwise, it will be set/added. Labels which do not have an entry in the dictionary will be ignored.

Sample code

See ModifyBucketLabels for a synchronous example.

PatchBucket(Bucket, PatchBucketOptions)

Patches the metadata for a storage bucket synchronously.

Declaration
public virtual Bucket PatchBucket(Bucket bucket, PatchBucketOptions options = null)
Parameters
Type Name Description
Bucket bucket

Bucket to update. Must not be null, and must have a populated Name property.

PatchBucketOptions options

Additional options for the update. May be null, in which case appropriate defaults will be used.

Returns
Type Description
Bucket

The Bucket representation of the updated storage bucket.

Sample code
var client = StorageClient.Create();
// Note: no fetching of the bucket beforehand. We only specify the values we want
// to change.
var bucket = new Bucket
{
    Name = bucketName,
    Website = new Bucket.WebsiteData
    {
        MainPageSuffix = "index.html",
        NotFoundPage = "404.html"
    }
};
client.PatchBucket(bucket);

PatchBucketAsync(Bucket, PatchBucketOptions, CancellationToken)

Patches the metadata for a storage bucket asynchronously.

Declaration
public virtual Task<Bucket> PatchBucketAsync(Bucket bucket, PatchBucketOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
Bucket bucket

Bucket to update. Must not be null, and must have a populated Name property.

PatchBucketOptions options

Additional options for the update. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<Bucket>

A task representing the asynchronous operation, with a result returning the Bucket representation of the bucket storage bucket.

Sample code

See PatchBucket for a synchronous example.

PatchObject(Object, PatchObjectOptions)

Patches the metadata for an object in storage synchronously.

Declaration
public virtual Object PatchObject(Object obj, PatchObjectOptions options = null)
Parameters
Type Name Description
Object obj

Object to update. Must not be null, and must have populated Name and Bucket properties.

PatchObjectOptions options

Additional options for the update. May be null, in which case appropriate defaults will be used.

Returns
Type Description
Object

The Object representation of the updated storage object.

Sample code
var client = StorageClient.Create();
var name = "patch-example.txt";
var content = Encoding.UTF8.GetBytes("hello, world");
var obj = new Apis.Storage.v1.Data.Object
{
    Bucket = bucketName,
    Name = name,
    ContentType = "text/json", // Deliberately incorrect
    Metadata = new Dictionary<string, string>
    {
        { "key1", "value1" },
        { "key2", "value2" }
    }
};
client.UploadObject(obj, new MemoryStream(content));

var patchObject = new Apis.Storage.v1.Data.Object
{
    // The bucket and name are required; everything else is optional.
    // Only specified properties will be updated.
    Bucket = bucketName,
    Name = name,
    ContentType = "text/plain",
    Metadata = new Dictionary<string, string>
    {
        { "key2", "updated-value2" },
        { "key3", "value3" }
    }
};
client.PatchObject(patchObject);

PatchObjectAsync(Object, PatchObjectOptions, CancellationToken)

Patches the metadata for an object in storage asynchronously.

Declaration
public virtual Task<Object> PatchObjectAsync(Object obj, PatchObjectOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
Object obj

Object to update. Must not be null, and must have populated Name and Bucket properties.

PatchObjectOptions options

Additional options for the update. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<Object>

A task representing the asynchronous operation, with a result returning the Object representation of the updated storage object.

Sample code

See PatchObject for a synchronous example.

RemoveBucketLabel(String, String, ModifyBucketLabelsOptions)

Removes a label from a bucket, if it previously existed. It is not an error to attempt to remove a label that doesn't already exist.

Declaration
public virtual string RemoveBucketLabel(string bucket, string labelName, ModifyBucketLabelsOptions options = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

System.String labelName

The name of the label to remove. Must not be null.

ModifyBucketLabelsOptions options

The options for the operation. May be null, in which case defaults will be supplied.

Returns
Type Description
System.String

The previous value of the label, or null if the label did not previously exist.

Remarks

This method is implemented by creating a single-element dictionary which is passed to ModifyBucketLabels(String, IDictionary<String, String>, ModifyBucketLabelsOptions).

Sample code
StorageClient client = StorageClient.Create();

string oldValue = client.RemoveBucketLabel(bucketName, "label");
Console.WriteLine($"Old value: {oldValue}");
// Verify the label is now gone...
Bucket bucket = client.GetBucket(bucketName);
string fetchedValue = null;
bucket.Labels?.TryGetValue("label", out fetchedValue);
Console.WriteLine($"Fetched value: {fetchedValue}");

RemoveBucketLabelAsync(String, String, ModifyBucketLabelsOptions, CancellationToken)

Removes a label from a bucket, if it previously existed, asynchronously. It is not an error to attempt to remove a label that doesn't already exist.

Declaration
public virtual Task<string> RemoveBucketLabelAsync(string bucket, string labelName, ModifyBucketLabelsOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

System.String labelName

The name of the label to remove. Must not be null.

ModifyBucketLabelsOptions options

The options for the operation. May be null, in which case defaults will be supplied.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<System.String>

The previous value of the label, or null if the label did not previously exist.

Remarks

This method is implemented by creating a single-element dictionary which is passed to ModifyBucketLabelsAsync(String, IDictionary<String, String>, ModifyBucketLabelsOptions, CancellationToken).

Sample code

See RemoveBucketLabel for a synchronous example.

SetBucketIamPolicy(String, Policy, SetBucketIamPolicyOptions)

Updates the IAM policy information about a bucket synchronously.

Declaration
public virtual Policy SetBucketIamPolicy(string bucket, Policy policy, SetBucketIamPolicyOptions options = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

Policy policy

The new IAM policy for the bucket. Must not be null.

SetBucketIamPolicyOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

Returns
Type Description
Policy

The Policy representation of the resulting storage bucket IAM policy.

Sample code
// Create a new bucket and an empty file within it
StorageClient client = StorageClient.Create();
Bucket bucket = client.CreateBucket(projectId, bucketName);
var obj = client.UploadObject(bucketName, "empty.txt", "text/plain", new MemoryStream());

// Demonstrate that without authentication, we can't download the object
HttpClient httpClient = new HttpClient();
HttpResponseMessage response1 = await httpClient.GetAsync(obj.MediaLink);
Console.WriteLine($"Response code before setting policy: {response1.StatusCode}");

// Fetch the current IAM policy, and modify it in memory to allow all users
// to view objects.
Policy policy = client.GetBucketIamPolicy(bucketName);
string role = "roles/storage.objectViewer";
Policy.BindingsData binding = policy.Bindings
    .Where(b => b.Role == role)
    .FirstOrDefault();
if (binding == null)
{
    binding = new Policy.BindingsData { Role = role, Members = new List<string>() };
    policy.Bindings.Add(binding);
}
binding.Members.Add("allUsers");

// Update the IAM policy on the bucket.
client.SetBucketIamPolicy(bucketName, policy);

// Wait 10 seconds to allow the policy to be applied.
// (Normally the policy change is visible pretty much immediately, but
// 10 seconds makes this very reliable.)
await Task.Delay(TimeSpan.FromSeconds(10));

// Download the object again: this time the response should be OK
HttpResponseMessage response2 = await httpClient.GetAsync(obj.MediaLink);
Console.WriteLine($"Response code after setting policy: {response2.StatusCode}");

SetBucketIamPolicyAsync(String, Policy, SetBucketIamPolicyOptions, CancellationToken)

Updates the IAM policy information about a bucket asynchronously.

Declaration
public virtual Task<Policy> SetBucketIamPolicyAsync(string bucket, Policy policy, SetBucketIamPolicyOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

Policy policy

The new IAM policy for the bucket. Must not be null.

SetBucketIamPolicyOptions options

Additional options for the fetch operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<Policy>

A task representing the asynchronous operation, with a result returning the Policy representation of the resulting storage bucket IAM policy.

Sample code

See SetBucketIamPolicy for a synchronous example.

SetBucketLabel(String, String, String, ModifyBucketLabelsOptions)

Sets the value for a single label on a bucket. The label will be added if it does not exist, or updated if it already exists.

Declaration
public virtual string SetBucketLabel(string bucket, string labelName, string labelValue, ModifyBucketLabelsOptions options = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

System.String labelName

The name of the label to set. Must not be null.

System.String labelValue

The value of the label to set. Must not be null.

ModifyBucketLabelsOptions options

The options for the operation. May be null, in which case defaults will be supplied.

Returns
Type Description
System.String

The previous value of the label, or null if the label did not previously exist.

Remarks

This method is implemented by creating a single-element dictionary which is passed to ModifyBucketLabels(String, IDictionary<String, String>, ModifyBucketLabelsOptions).

Sample code
StorageClient client = StorageClient.Create();

string now = DateTime.UtcNow.ToString("yyyy-MM-dd_HH-mm-ss", CultureInfo.InvariantCulture);
string newValue = "new_value_" + now;
string oldValue = client.SetBucketLabel(bucketName, "label", newValue);
Console.WriteLine($"Old value: {oldValue}");
// Verify the label is now correct...
Bucket bucket = client.GetBucket(bucketName);
string fetchedValue = bucket.Labels?["label"];
Console.WriteLine($"Fetched value: {fetchedValue}");

SetBucketLabelAsync(String, String, String, ModifyBucketLabelsOptions, CancellationToken)

Sets the value for a single label on a bucket asynchronously. The label will be added if it does not exist, or updated if it already exists.

Declaration
public virtual Task<string> SetBucketLabelAsync(string bucket, string labelName, string labelValue, ModifyBucketLabelsOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

System.String labelName

The name of the label to set. Must not be null.

System.String labelValue

The value of the label to set. Must not be null.

ModifyBucketLabelsOptions options

The options for the operation. May be null, in which case defaults will be supplied.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<System.String>

The previous value of the label, or null if the label did not previously exist.

Remarks

This method is implemented by creating a single-element dictionary which is passed to ModifyBucketLabelsAsync(String, IDictionary<String, String>, ModifyBucketLabelsOptions, CancellationToken).

Sample code

See SetBucketLabel for a synchronous example.

TestBucketIamPermissions(String, IEnumerable<String>, TestBucketIamPermissionsOptions)

Tests the IAM permissions for a bucket synchronously.

Declaration
public virtual IList<string> TestBucketIamPermissions(string bucket, IEnumerable<string> permissions, TestBucketIamPermissionsOptions options = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

System.Collections.Generic.IEnumerable<System.String> permissions

The permissions to test. Must not be null or empty.

TestBucketIamPermissionsOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

Returns
Type Description
System.Collections.Generic.IList<System.String>

The permissions held by the caller.

Sample code
StorageClient client = StorageClient.Create();

IList<string> permissions = client.TestBucketIamPermissions(bucketName,
    new[] { "storage.buckets.get", "storage.objects.list" });
Console.WriteLine("Permissions held:");
foreach (string permission in permissions)
{
    Console.WriteLine($"  {permission}");
}

TestBucketIamPermissionsAsync(String, IEnumerable<String>, TestBucketIamPermissionsOptions, CancellationToken)

Tests the IAM policy information about a bucket asynchronously.

Declaration
public virtual Task<IList<string>> TestBucketIamPermissionsAsync(string bucket, IEnumerable<string> permissions, TestBucketIamPermissionsOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
System.String bucket

The name of the bucket. Must not be null.

System.Collections.Generic.IEnumerable<System.String> permissions

The permissions to test. Must not be null or empty.

TestBucketIamPermissionsOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<System.Collections.Generic.IList<System.String>>

A task representing the asynchronous operation, with a result returning the permissions held by the caller.

Sample code

See TestBucketIamPermissions for a synchronous example.

UpdateBucket(Bucket, UpdateBucketOptions)

Updates the metadata for a storage bucket synchronously.

Declaration
public virtual Bucket UpdateBucket(Bucket bucket, UpdateBucketOptions options = null)
Parameters
Type Name Description
Bucket bucket

Bucket to update. Must not be null, and must have a populated Name.

UpdateBucketOptions options

Additional options for the update. May be null, in which case appropriate defaults will be used.

Returns
Type Description
Bucket

The Bucket representation of the updated storage bucket.

Remarks

If no preconditions are explicitly set in options, the metageneration of bucket is used as a precondition for the update, unless ForceNoPreconditions is set to true.

Sample code
var client = StorageClient.Create();
var bucket = client.GetBucket(bucketName);
bucket.Website = new Bucket.WebsiteData
{
    MainPageSuffix = "index.html",
    NotFoundPage = "404.html"
};
client.UpdateBucket(bucket);

UpdateBucketAsync(Bucket, UpdateBucketOptions, CancellationToken)

Updates the metadata for storage bucket asynchronously.

Declaration
public virtual Task<Bucket> UpdateBucketAsync(Bucket bucket, UpdateBucketOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
Bucket bucket

Bucket to update. Must not be null, and must have a populated Name.

UpdateBucketOptions options

Additional options for the update. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<Bucket>

A task representing the asynchronous operation, with a result returning the Bucket representation of the storage bucket.

Remarks

If no preconditions are explicitly set in options, the metageneration of bucket is used as a precondition for the update, unless ForceNoPreconditions is set to true.

Sample code

See UpdateBucket for a synchronous example.

UpdateHmacKey(HmacKeyMetadata, UpdateHmacKeyOptions)

Synchronously updates an HMAC key's metadata.

Declaration
public virtual HmacKeyMetadata UpdateHmacKey(HmacKeyMetadata key, UpdateHmacKeyOptions options = null)
Parameters
Type Name Description
HmacKeyMetadata key

The key to update. Must not be null, and the ProjectId and AccessId properties must be set.

UpdateHmacKeyOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

Returns
Type Description
HmacKeyMetadata

The updated key metadata.

UpdateHmacKeyAsync(HmacKeyMetadata, UpdateHmacKeyOptions, CancellationToken)

Asynchronously updates an HMAC key's metadata.

Declaration
public virtual Task<HmacKeyMetadata> UpdateHmacKeyAsync(HmacKeyMetadata key, UpdateHmacKeyOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
HmacKeyMetadata key

The key to update. Must not be null, and the ProjectId and AccessId properties must be set.

UpdateHmacKeyOptions options

Additional options for the operation. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<HmacKeyMetadata>

A task representing the asynchronous operation, with a result returning the updated key metadata.

UpdateObject(Object, UpdateObjectOptions)

Updates the metadata for an object in storage synchronously.

Declaration
public virtual Object UpdateObject(Object obj, UpdateObjectOptions options = null)
Parameters
Type Name Description
Object obj

Object to update. Must not be null, and must have populated Name and Bucket properties.

UpdateObjectOptions options

Additional options for the update. May be null, in which case appropriate defaults will be used.

Returns
Type Description
Object

The Object representation of the updated storage object.

Remarks

If no preconditions are explicitly set in options, the generation and metageneration of obj are used as a precondition for the update, unless ForceNoPreconditions is set to true.

Sample code
var client = StorageClient.Create();
var name = "update-example.txt";
var content = Encoding.UTF8.GetBytes("hello, world");
var obj = new Apis.Storage.v1.Data.Object
{
    Bucket = bucketName,
    Name = name,
    ContentType = "text/json",
    Metadata = new Dictionary<string, string>
    {
        { "key1", "value1" },
        { "key2", "value2" }
    }
};
obj = client.UploadObject(obj, new MemoryStream(content));
obj.Metadata.Remove("key1");
obj.Metadata["key2"] = "updated-value2";
obj.Metadata["key3"] = "value3";
obj.ContentType = "text/plain";
client.UpdateObject(obj);

UpdateObjectAsync(Object, UpdateObjectOptions, CancellationToken)

Updates the metadata for an object in storage asynchronously.

Declaration
public virtual Task<Object> UpdateObjectAsync(Object obj, UpdateObjectOptions options = null, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type Name Description
Object obj

Object to update. Must not be null, and must have populated Name and Bucket properties.

UpdateObjectOptions options

Additional options for the update. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

Returns
Type Description
System.Threading.Tasks.Task<Object>

A task representing the asynchronous operation, with a result returning the Object representation of the storage object.

Remarks

If no preconditions are explicitly set in options, the generation and metageneration of obj are used as a precondition for the update, unless ForceNoPreconditions is set to true.

Sample code

See UpdateObject for a synchronous example.

UploadObject(Object, Stream, UploadObjectOptions, IProgress<IUploadProgress>)

Uploads the data for an object in storage synchronously, from a specified stream.

Declaration
public virtual Object UploadObject(Object destination, Stream source, UploadObjectOptions options = null, IProgress<IUploadProgress> progress = null)
Parameters
Type Name Description
Object destination

Object to create or update. Must not be null, and must have the name, bucket and content type populated.

System.IO.Stream source

The stream to read the data from. Must not be null.

UploadObjectOptions options

Additional options for the upload. May be null, in which case appropriate defaults will be used.

System.IProgress<IUploadProgress> progress

Progress reporter for the upload. May be null.

Returns
Type Description
Object

The Object representation of the uploaded object.

Sample code

See UploadObject for an example using an alternative overload.

UploadObject(String, String, String, Stream, UploadObjectOptions, IProgress<IUploadProgress>)

Uploads the data for an object in storage synchronously, from a specified stream.

Declaration
public virtual Object UploadObject(string bucket, string objectName, string contentType, Stream source, UploadObjectOptions options = null, IProgress<IUploadProgress> progress = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket containing the object. Must not be null.

System.String objectName

The name of the object within the bucket. Must not be null.

System.String contentType

The content type of the object. This should be a MIME type such as "text/html" or "application/octet-stream". May be null.

System.IO.Stream source

The stream to read the data from. Must not be null.

UploadObjectOptions options

Additional options for the upload. May be null, in which case appropriate defaults will be used.

System.IProgress<IUploadProgress> progress

Progress reporter for the upload. May be null.

Returns
Type Description
Object

The Object representation of the uploaded object.

Sample code
var client = StorageClient.Create();
var source = "world.txt";
var destination = "places/world.txt";
var contentType = "text/plain";

using (var stream = File.OpenRead(source))
{
    // IUploadProgress defined in Google.Apis.Upload namespace
    var progress = new Progress<IUploadProgress>(
      p => Console.WriteLine($"bytes: {p.BytesSent}, status: {p.Status}")
    );

    // var acl = PredefinedAcl.PublicRead // public
    var acl = PredefinedObjectAcl.AuthenticatedRead; // private
    var options = new UploadObjectOptions { PredefinedAcl = acl };
    var obj = client.UploadObject(bucketName, destination, contentType, stream, options, progress);
}

UploadObjectAsync(Object, Stream, UploadObjectOptions, CancellationToken, IProgress<IUploadProgress>)

Uploads the data for an object in storage asynchronously, from a specified stream.

Declaration
public virtual Task<Object> UploadObjectAsync(Object destination, Stream source, UploadObjectOptions options = null, CancellationToken cancellationToken = default(CancellationToken), IProgress<IUploadProgress> progress = null)
Parameters
Type Name Description
Object destination

Object to create or update. Must not be null, and must have the name, bucket and content type populated.

System.IO.Stream source

The stream to read the data from. Must not be null.

UploadObjectOptions options

Additional options for the upload. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

System.IProgress<IUploadProgress> progress

Progress reporter for the upload. May be null.

Returns
Type Description
System.Threading.Tasks.Task<Object>

A task representing the asynchronous operation, with a result returning the Object representation of the uploaded object.

Sample code

See UploadObject for a synchronous example.

UploadObjectAsync(String, String, String, Stream, UploadObjectOptions, CancellationToken, IProgress<IUploadProgress>)

Uploads the data for an object in storage asynchronously, from a specified stream.

Declaration
public virtual Task<Object> UploadObjectAsync(string bucket, string objectName, string contentType, Stream source, UploadObjectOptions options = null, CancellationToken cancellationToken = default(CancellationToken), IProgress<IUploadProgress> progress = null)
Parameters
Type Name Description
System.String bucket

The name of the bucket containing the object. Must not be null.

System.String objectName

The name of the object within the bucket. Must not be null.

System.String contentType

The content type of the object. This should be a MIME type such as "text/html" or "application/octet-stream". May be null.

System.IO.Stream source

The stream to read the data from. Must not be null.

UploadObjectOptions options

Additional options for the upload. May be null, in which case appropriate defaults will be used.

System.Threading.CancellationToken cancellationToken

The token to monitor for cancellation requests.

System.IProgress<IUploadProgress> progress

Progress reporter for the upload. May be null.

Returns
Type Description
System.Threading.Tasks.Task<Object>

A task representing the asynchronous operation, with a result returning the Object representation of the uploaded object.

Sample code

See UploadObject for a synchronous example.

Back to top