public AzureStorageController() { Authentication = new Authentication(); PreprocessPerformsDiscovery = true; ListType = AzureListType.File; TemplateKVP["[ContainerName]"] = "Reserved"; }
public List <IListBlobItem> ListObjects(string containerName, string directory, AzureListType listType, bool recurse, string directoryFilter, string fileFilter) { List <IListBlobItem> ret = new List <IListBlobItem>(); Regex inclusiveDirFilter = STEM.Sys.IO.Path.BuildInclusiveFilter(directoryFilter); Regex exclusiveDirFilter = STEM.Sys.IO.Path.BuildExclusiveFilter(directoryFilter); Regex inclusiveFileFilter = STEM.Sys.IO.Path.BuildInclusiveFilter(fileFilter); Regex exclusiveFileFilter = STEM.Sys.IO.Path.BuildExclusiveFilter(fileFilter); if (String.IsNullOrEmpty(containerName)) { foreach (CloudBlobContainer cc in ListContainers()) { foreach (IListBlobItem blob in ListBlobs(cc)) { if (blob is CloudBlockBlob) { if (listType == AzureListType.File || listType == AzureListType.All) { string path = ToString(blob); string dir = STEM.Sys.IO.Path.GetDirectoryName(path); if (inclusiveDirFilter == null || inclusiveDirFilter.IsMatch(STEM.Sys.IO.Path.GetFileName(dir.TrimEnd('/')).ToUpper())) { if (exclusiveDirFilter == null || !exclusiveDirFilter.IsMatch(STEM.Sys.IO.Path.GetFileName(dir.TrimEnd('/')).ToUpper())) { if (inclusiveFileFilter == null || inclusiveFileFilter.IsMatch(STEM.Sys.IO.Path.GetFileName(path).ToUpper())) { if (exclusiveFileFilter == null || !exclusiveFileFilter.IsMatch(STEM.Sys.IO.Path.GetFileName(path).ToUpper())) { ret.Add(blob); } } } } } } else if (blob is CloudBlobDirectory) { string dir = ToString(blob); if (inclusiveDirFilter == null || inclusiveDirFilter.IsMatch(STEM.Sys.IO.Path.GetFileName(dir.TrimEnd('/')).ToUpper())) { if (exclusiveDirFilter == null || !exclusiveDirFilter.IsMatch(STEM.Sys.IO.Path.GetFileName(dir.TrimEnd('/')).ToUpper())) { if (listType == AzureListType.Directory || listType == AzureListType.All) { ret.Add(blob); } if (recurse) { string p = ToString(blob); ret.AddRange(ListObjects(ContainerFromPath(p), PrefixFromPath(p), listType, recurse, directoryFilter, fileFilter)); } } } } } } return(ret); } foreach (IListBlobItem blob in ListBlobs(containerName, directory)) { if (blob is CloudBlockBlob) { if (listType == AzureListType.File || listType == AzureListType.All) { string path = ToString(blob); string dir = STEM.Sys.IO.Path.GetDirectoryName(path); if (inclusiveDirFilter == null || inclusiveDirFilter.IsMatch(STEM.Sys.IO.Path.GetFileName(dir.TrimEnd('/')).ToUpper())) { if (exclusiveDirFilter == null || !exclusiveDirFilter.IsMatch(STEM.Sys.IO.Path.GetFileName(dir.TrimEnd('/')).ToUpper())) { if (inclusiveFileFilter == null || inclusiveFileFilter.IsMatch(STEM.Sys.IO.Path.GetFileName(path).ToUpper())) { if (exclusiveFileFilter == null || !exclusiveFileFilter.IsMatch(STEM.Sys.IO.Path.GetFileName(path).ToUpper())) { ret.Add(blob); } } } } } } else if (blob is CloudBlobDirectory) { string dir = ToString(blob); if (inclusiveDirFilter == null || inclusiveDirFilter.IsMatch(STEM.Sys.IO.Path.GetFileName(dir.TrimEnd('/')).ToUpper())) { if (exclusiveDirFilter == null || !exclusiveDirFilter.IsMatch(STEM.Sys.IO.Path.GetFileName(dir.TrimEnd('/')).ToUpper())) { if (listType == AzureListType.Directory || listType == AzureListType.All) { ret.Add(blob); } if (recurse) { string p = ToString(blob); ret.AddRange(ListObjects(ContainerFromPath(p), PrefixFromPath(p), listType, recurse, directoryFilter, fileFilter)); } } } } } return(ret); }