public static void CopyBlockBlob(CopyBlockBlobSettings copyBlockBlobSettings)
{
Contract.Requires(copyBlockBlobSettings != null, "The copy block blob settings cannot be null.");
var sourceStorageAccount = new CloudStorageAccount(new StorageCredentialsAccountAndKey(copyBlockBlobSettings.BlobStorageSource, copyBlockBlobSettings.BlobStorageSourceKey), copyBlockBlobSettings.UseHttps);
var sourceClient = sourceStorageAccount.CreateCloudBlobClient();
var destinationStorageAccount = new CloudStorageAccount(new StorageCredentialsAccountAndKey(copyBlockBlobSettings.BlobStorageDestination, copyBlockBlobSettings.BlobStorageDestinationKey), copyBlockBlobSettings.UseHttps);
var destinationClient = destinationStorageAccount.CreateCloudBlobClient();
var destinationContainer = destinationClient.GetContainerReference(copyBlockBlobSettings.DestinationContainerName);
try
{
destinationContainer.CreateIfNotExist();
}
catch
{
// do nothing, create if not exists blows up if it already exists... nice.
}
var sourceBlob = sourceClient.GetBlockBlobReference(copyBlockBlobSettings.BlobSourcePath);
sourceBlob.FetchAttributes();
CloudBlob destinationBlob = destinationClient.GetBlockBlobReference(copyBlockBlobSettings.BlobDestinationPath);
destinationBlob.StartCopyFromBlob(sourceBlob.Uri);
MonitorCopy(destinationBlob.Container);
}