private static TransferLocation GetSourceTransferLocation(TransferLocation dirLocation, TransferEntry entry) { switch (dirLocation.Type) { case TransferLocationType.AzureBlobDirectory: AzureBlobDirectoryLocation azureBlobDirLocation = dirLocation as AzureBlobDirectoryLocation; AzureBlobEntry azureBlobEntry = entry as AzureBlobEntry; AzureBlobLocation azureBlobLocation = new AzureBlobLocation(azureBlobEntry.Blob); azureBlobLocation.BlobRequestOptions = azureBlobDirLocation.BlobRequestOptions; return(azureBlobLocation); case TransferLocationType.AzureFileDirectory: AzureFileDirectoryLocation azureFileDirLocation = dirLocation as AzureFileDirectoryLocation; AzureFileEntry azureFileEntry = entry as AzureFileEntry; AzureFileLocation azureFileLocation = new AzureFileLocation(azureFileEntry.File); azureFileLocation.FileRequestOptions = azureFileDirLocation.FileRequestOptions; return(azureFileLocation); case TransferLocationType.LocalDirectory: FileEntry fileEntry = entry as FileEntry; return(new FileLocation(fileEntry.FullPath)); default: throw new ArgumentException("TransferLocationType"); } }
protected TransferLocation GetDestTransferLocationForEmptyDir(TransferLocation dirLocation, TransferEntry entry) { string destRelativePath = this.nameResolver.ResolveName(entry); AzureBlobEntry sourceBlobEntry = entry as AzureBlobEntry; switch (dirLocation.Type) { case TransferLocationType.AzureBlobDirectory: { return(null); } case TransferLocationType.AzureFileDirectory: { AzureFileDirectoryLocation fileDirLocation = dirLocation as AzureFileDirectoryLocation; CloudFileDirectory destDirLocation = fileDirLocation.FileDirectory; if (!string.IsNullOrEmpty(destRelativePath)) { destDirLocation = destDirLocation.GetDirectoryReference(destRelativePath); } AzureFileDirectoryLocation retLocation = new AzureFileDirectoryLocation(destDirLocation); retLocation.FileRequestOptions = fileDirLocation.FileRequestOptions; return(retLocation); } case TransferLocationType.LocalDirectory: { return(null); } default: throw new ArgumentException("TransferLocationType"); } }
private TransferLocation GetDestinationTransferLocation(TransferLocation dirLocation, TransferEntry entry) { string destRelativePath = this.nameResolver.ResolveName(entry); switch (dirLocation.Type) { case TransferLocationType.AzureBlobDirectory: { AzureBlobDirectoryLocation blobDirLocation = dirLocation as AzureBlobDirectoryLocation; BlobType destBlobType = this.BlobType; AzureBlobEntry sourceBlobEntry = entry as AzureBlobEntry; if (sourceBlobEntry != null) { // if source is Azure blob storage, source and destination blob share the same blob type destBlobType = sourceBlobEntry.Blob.BlobType; } CloudBlob blob = null; switch (destBlobType) { case Blob.BlobType.BlockBlob: case Blob.BlobType.Unspecified: blob = blobDirLocation.BlobDirectory.GetBlockBlobReference(destRelativePath); break; case Blob.BlobType.PageBlob: blob = blobDirLocation.BlobDirectory.GetPageBlobReference(destRelativePath); break; case Blob.BlobType.AppendBlob: blob = blobDirLocation.BlobDirectory.GetAppendBlobReference(destRelativePath); break; } AzureBlobLocation retLocation = new AzureBlobLocation(blob); retLocation.BlobRequestOptions = blobDirLocation.BlobRequestOptions; return(retLocation); } case TransferLocationType.AzureFileDirectory: { AzureFileDirectoryLocation fileDirLocation = dirLocation as AzureFileDirectoryLocation; CloudFile file = fileDirLocation.FileDirectory.GetFileReference(destRelativePath); CreateParentDirectoryIfNotExists(file); AzureFileLocation retLocation = new AzureFileLocation(file); retLocation.FileRequestOptions = fileDirLocation.FileRequestOptions; return(retLocation); } case TransferLocationType.LocalDirectory: { DirectoryLocation localDirLocation = dirLocation as DirectoryLocation; string path = Path.Combine(localDirLocation.DirectoryPath, destRelativePath); CreateParentDirectoryIfNotExists(path); return(new FileLocation(path)); } default: throw new ArgumentException("TransferLocationType"); } }