public string AjaxFileBrowser(string name = "") { DiscountBlobContainer cont = new DiscountBlobContainer(); List<IListBlobItem> blobs = new List<IListBlobItem>(); if (name != "") { if (name.Contains("/")) { cont = BlobManagement.GetFolderForSerialization(name); blobs = BlobManagement.GetDirectoryBlobs(name); } else { cont = BlobManagement.GetContainer(name); blobs = BlobManagement.GetBlobs(name); } } else { cont = new DiscountBlobContainer { BlobCount = 0, Container = null, parent = null, uri = null, SubContainers = BlobManagement.GetContainers().Where(x => !hiddenContainers.Contains(x.Container.Name)).ToList<DiscountBlobContainer>() }; } List<BlobFile> files = new List<BlobFile>(); foreach (IListBlobItem blob in blobs) { if (!blob.GetType().Equals(typeof(CloudBlobDirectory))) { BlobFile bf = new BlobFile { uri = blob.Uri }; files.Add(bf); } } cont.files = files; return JsonConvert.SerializeObject(cont); }
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>(); } }
public ActionResult FileBrowser(string name = "", string CKEditor = "", string CKEditorFuncNum = "", string langCode = "") { DiscountBlobContainer cont = new DiscountBlobContainer(); List<IListBlobItem> blobs = new List<IListBlobItem>(); if (name != "") { if (name.Contains("/")) { cont = BlobManagement.GetFolder(name); blobs = BlobManagement.GetDirectoryBlobs(name); } else { cont = BlobManagement.GetContainer(name); blobs = BlobManagement.GetBlobs(name); } } else { cont = new DiscountBlobContainer { BlobCount = 0, Container = null, parent = null, uri = null, SubContainers = BlobManagement.GetContainers().Where(x => !hiddenContainers.Contains(x.Container.Name)).ToList<DiscountBlobContainer>() }; } string[] folders = name.Split('/'); List<string> usernames = Profiles.GetAllUsernames(); List<IListBlobItem> files = new List<IListBlobItem>(); foreach (IListBlobItem blob in blobs) { if (!blob.GetType().Equals(typeof(CloudBlobDirectory))) { files.Add(blob); } } ViewBag.container = cont; ViewBag.files = files; ViewBag.folders = folders; ViewBag.usernames = usernames; ViewBag.CKEditor = CKEditor; ViewBag.CKEditorFuncNum = CKEditorFuncNum; ViewBag.langCode = langCode; return View(); }
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; }
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; }
internal static List<DiscountBlobContainer> GetContainersForSerialization() { 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 = 0, Container = con, uri = con.Uri, }; containers.Add(discountContainer); } return containers; } catch (Exception) { return new List<DiscountBlobContainer>(); } }
internal static DiscountBlobContainer GetFolder(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 parentContainer = client.GetContainerReference(GetParentFromPath(name)); CloudBlobDirectory con = parentContainer.GetDirectoryReference(GetDirectoryFromPath(name)); DiscountBlobContainer container = new DiscountBlobContainer { Container = con.Container, parent = con.Parent ?? null, BlobCount = (con.ListBlobs() == null) ? 0 : con.ListBlobs().Where(x => x.GetType() != typeof(CloudBlobContainer)).Count(), uri = con.Uri, SubContainers = GetSubContainers(name), SubCount = (con.ListBlobs() == null) ? 0 : con.ListBlobs().Where(x => x.GetType() == typeof(CloudBlobContainer)).Count(), }; return container; }