public 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, uri = sub_dir.Uri }; subs.Add(sub); } return subs; } catch (Exception) { return new List<DiscountBlobContainer>(); } }
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(); DiscountBlobContainer container = new DiscountBlobContainer(); CloudBlobContainer con = null; if (parent.Length > 0) { string[] folders = parent.Split('/'); parent = ""; for (var i = 1; i < folders.Count(); i++) { parent += folders[i]; if (i < folders.Count() - 1 && parent != "") { parent += "/"; } } conName = (parent != "") ? parent + "/" + conName : conName; string fileName = "/required.req"; string filetext = "#REQUIRED: At least one file is required to be present in this folder."; con = client.GetContainerReference(folders[0]); CloudBlob f = con.GetBlobReference(conName + fileName); f.UploadText(filetext); CloudBlobDirectory d = con.GetDirectoryReference(conName); // Cast to our object container = new DiscountBlobContainer { Container = d.Container, BlobCount = d.ListBlobs().Count(), uri = d.Uri, SubContainers = GetSubContainers(conName) }; }else{ // Retrieve a reference to a container con = client.GetContainerReference(conName); // Create the container if it doesn't already exist con.CreateIfNotExist(); // Cast to our object container = new DiscountBlobContainer { Container = client.GetContainerReference(conName), BlobCount = 0, uri = client.GetContainerReference(conName).Uri, SubContainers = GetSubContainers(conName) }; } if (make_public) { // Make access to this container public con.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); } return container; }
public static void log(string message = "") { Settings settings = new Settings(); string loggingstring = settings.Get("logging"); bool isLoggingEnabled = (loggingstring.ToLower().Trim() != "true") ? false : true; if (isLoggingEnabled) { DiscountBlobContainer logblobs = new DiscountBlobContainer(); logblobs = BlobManagement.GetContainer("logs"); BlobContainerPermissions perms = new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }; logblobs.Container.SetPermissions(perms); CloudBlob blob = logblobs.Container.GetBlobReference("log-" + String.Format("{0:MM-dd-yyyy}", DateTime.Now) + ".txt"); string blobtext = ""; try { blobtext = blob.DownloadText(); } catch { }; blob.UploadText(blobtext + String.Format("{0:M-d-yyyy HH:mm:ss.fff: }", DateTime.Now) + message + Environment.NewLine); } }
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, uri = newContainer.Uri, BlobCount = newContainer.ListBlobs().Count() }; return con; }
internal static DiscountBlobContainer GetFolderForSerialization(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 CloudBlobDirectory con = client.GetBlobDirectoryReference(name); DiscountBlobContainer container = new DiscountBlobContainer { Container = null, parent = null, BlobCount = (con.ListBlobs() == null) ? 0 : con.ListBlobs().Count(), uri = con.Uri, SubContainers = GetSubContainers(name) }; return container; }
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) { List<IListBlobItem> blobs = GetBlobs(con.Name); List<BlobFile> files = new List<BlobFile>(); DiscountBlobContainer discountContainer = new DiscountBlobContainer { BlobCount = blobs.Count, Container = con, uri = con.Uri, SubContainers = GetSubContainers(con.Name) }; foreach (IListBlobItem blob in blobs) { if (!blob.GetType().Equals(typeof(CloudBlobDirectory))) { BlobFile bf = new BlobFile { uri = blob.Uri }; files.Add(bf); } } discountContainer.files = files; containers.Add(discountContainer); } return containers; } catch (Exception) { return new List<DiscountBlobContainer>(); } }
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.CreateIfNotExist(); DiscountBlobContainer container = new DiscountBlobContainer { Container = con, BlobCount = GetBlobs(con.Name).Count, uri = con.Uri, SubContainers = GetSubContainers(con.Name) }; return container; }