//using Azure.Storage.Blobs; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Blob; using Microsoft.WindowsAzure.Storage.Table; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using Tango.Portal.Models; namespace Tango.Portal.Utils { public class StorageUtils { private CloudStorageAccount _storageAccount; public StorageUtils() { _storageAccount = CloudStorageAccount.Parse(PortalConfig.STORAGE_ACCOUNT); } public List GetTableData(String tableName) where T : TableEntity, new() { CloudTableClient tableClient = _storageAccount.CreateCloudTableClient(); CloudTable table = tableClient.GetTableReference(tableName); TableQuery query = new TableQuery(); return table.ExecuteQuerySegmented(query, null).ToList(); } public List GetContainerLatestBlobs(String containerName, String blobStartsWith = null, int maxResults = 5) { var client = _storageAccount.CreateCloudBlobClient(); var container = client.GetContainerReference(containerName); var blobs = container.ListBlobs(useFlatBlobListing: true) .OfType() .Where(x => x.Name.StartsWith(blobStartsWith) && x.Name.EndsWith(".exe")) .OrderByDescending(x => x.Properties.LastModified) .Take(maxResults) .Select(x => new AzureBlob() { Name = x.Name, LastModified = x.Properties.LastModified.Value.Date, URL = x.Uri.AbsolutePath }) .ToList(); return blobs; } public List GetAllBlobs(String containerName) { var client = _storageAccount.CreateCloudBlobClient(); var container = client.GetContainerReference(containerName); var blobs = container.ListBlobs(useFlatBlobListing: true) .OfType() .Select(x => new AzureBlob() { Name = x.Name, LastModified = x.Properties.Created != null ? x.Properties.LastModified.Value.Date : DateTime.Now, URL = x.Uri.AbsolutePath }) .ToList(); return blobs; } public bool CheckBlobExists(String containerName, String blobName) { var client = _storageAccount.CreateCloudBlobClient(); var container = client.GetContainerReference(containerName); var blob = container.GetBlobReference(blobName); return blob.Exists(); } public AzureBlob GetBlob(String containerName, String blobName) { var client = _storageAccount.CreateCloudBlobClient(); var container = client.GetContainerReference(containerName); var blob = container.GetBlobReference(blobName); return new AzureBlob() { Name = blob.Name, URL = blob.Uri.AbsolutePath }; } public void CreateBlobFromBytes(byte[] data, String containerName, String blobName) { var client = _storageAccount.CreateCloudBlobClient(); var container = client.GetContainerReference(containerName); CloudBlockBlob blob = container.GetBlockBlobReference(blobName); blob.UploadFromByteArray(data, 0, data.Length); } public Stream GetBlobStream(String containerName, String blobName) { var client = _storageAccount.CreateCloudBlobClient(); var container = client.GetContainerReference(containerName); CloudBlockBlob blob = container.GetBlockBlobReference(blobName); return blob.OpenRead(); } } }