1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
//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<T> GetTableData<T>(String tableName) where T : TableEntity, new()
{
CloudTableClient tableClient = _storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference(tableName);
TableQuery<T> query = new TableQuery<T>();
return table.ExecuteQuerySegmented<T>(query, null).ToList();
}
public List<AzureBlob> 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<CloudBlob>()
.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<AzureBlob> GetAllBlobs(String containerName)
{
var client = _storageAccount.CreateCloudBlobClient();
var container = client.GetContainerReference(containerName);
var blobs = container.ListBlobs(useFlatBlobListing: true)
.OfType<CloudBlob>()
.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();
}
}
}
|