internal static DiscountBlobContainer GetContainer(string name) { if (name == null || name.Length == 0) { return new DiscountBlobContainer { Container = null, BlobCount = 0 }; } // Retrieve storage account from connection string CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")); // Create the blobl client CloudBlobClient client = storageAccount.CreateCloudBlobClient(); // Retrieve a reference to a previously created container CloudBlobContainer con = client.GetContainerReference(name); con.CreateIfNotExists(); con.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Container }); DiscountBlobContainer container = new DiscountBlobContainer { Container = con, BlobCount = GetBlobs(con.Name).Count, SubContainers = GetSubContainers(con.Name) }; return container; }
internal static DiscountBlobContainer CreateContainer(string name = "", string parent = "", bool make_public = true) { // Build out a relationship between the new container name and parent (if parent is provided) string conName = name.ToLower().Replace(' ','-'); // Retrieve storage account from connection string CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")); // Create the blobl client CloudBlobClient client = storageAccount.CreateCloudBlobClient(); CloudBlobContainer con = null; if (parent.Length > 0) { //conName = parent + "/" + name; CloudBlobContainer parentContainer = client.GetContainerReference(parent); CloudBlobDirectory subCon = parentContainer.GetDirectoryReference(name); subCon.Container.CreateIfNotExists(); con = subCon.Container; }else{ // Retrieve a reference to a container con = client.GetContainerReference(conName); // Create the container if it doesn't already exist con.CreateIfNotExists(); } if (make_public) { // Make access to this container public con.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); } // Cast to our object DiscountBlobContainer container = new DiscountBlobContainer { Container = client.GetContainerReference(conName), BlobCount = 0, SubContainers = GetSubContainers(conName) }; return container; }
internal static DiscountBlobContainer RenameContainer(string old_name, string new_name) { if (old_name == null || old_name.Length == 0) { throw new Exception("Invalid reference to existing name."); } if (new_name == null || new_name.Length == 0) { throw new Exception("No new name specified."); } // Retrieve storage account from connection string CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")); // Create blob client CloudBlobClient client = storageAccount.CreateCloudBlobClient(); // Retrieve a reference to a previously created container CloudBlobContainer oldContainer = client.GetContainerReference(old_name); // Create and retrieve reference to new container CloudBlobContainer newContainer = client.GetContainerReference(new_name); newContainer.CreateIfNotExist(); newContainer.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); foreach (var blob in oldContainer.ListBlobs()) { if (blob.GetType().ToString().ToUpper() == "CLOUDBLOBDIRECTORY") { CloudBlobDirectory oldDir = (CloudBlobDirectory)blob; // Get the name of the directory string dirName = oldDir.Container.Name; } else { CloudBlob oldBlob = (CloudBlob)blob; // Get the filename of the existing blob string filename = Path.GetFileName(blob.Uri.ToString()); // Create blob reference for the new container using the existing blob's filename CloudBlob newBlob = newContainer.GetBlobReference(filename); // Copy old blob to new blob newBlob.CopyFromBlob(oldBlob); // Delete old Blob oldBlob.DeleteIfExists(); } } // Delete old container oldContainer.Delete(); DiscountBlobContainer con = new DiscountBlobContainer { Container = newContainer, BlobCount = newContainer.ListBlobs().Count() }; return con; }
internal static List<DiscountBlobContainer> GetSubContainers(string parent = "") { try { // Retrieve storage account from connection string CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")); // Create the blobl client CloudBlobClient client = storageAccount.CreateCloudBlobClient(); CloudBlobDirectory container = client.GetBlobDirectoryReference(parent); List<DiscountBlobContainer> subs = new List<DiscountBlobContainer>(); foreach (CloudBlobDirectory sub_dir in container.ListBlobs().OfType<CloudBlobDirectory>()) { DiscountBlobContainer sub = new DiscountBlobContainer { BlobCount = sub_dir.ListBlobs().Count(), Container = sub_dir.Container }; subs.Add(sub); } return subs; } catch (Exception) { return new List<DiscountBlobContainer>(); } }
internal static List<DiscountBlobContainer> GetContainers() { try { // Retrieve storage account from connection string CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")); // Create the blobl client CloudBlobClient client = storageAccount.CreateCloudBlobClient(); List<CloudBlobContainer> cloudContainers = new List<CloudBlobContainer>(); List<DiscountBlobContainer> containers = new List<DiscountBlobContainer>(); cloudContainers = client.ListContainers().ToList<CloudBlobContainer>(); foreach (CloudBlobContainer con in cloudContainers) { DiscountBlobContainer discountContainer = new DiscountBlobContainer { BlobCount = GetBlobs(con.Name).Count, Container = con, SubContainers = GetSubContainers(con.Name) }; containers.Add(discountContainer); } return containers; } catch (Exception) { return new List<DiscountBlobContainer>(); } }