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;
        }
Exemplo n.º 9
0
        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>();
            }
        }
Exemplo n.º 10
0
        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;
        }