internal static DataContracts.BlobContents GetBlobContents(Storage.StorageAccountInfo accountInfo, string containerName, string blobName)
 {
     Storage.BlobStorage storage = Storage.BlobStorage.Create(accountInfo);
     Storage.BlobContainer container = storage.GetBlobContainer(containerName);
     if (!container.DoesContainerExist()) return null;
     if (!container.DoesBlobExist(blobName)) return null;
     System.IO.MemoryStream ms = new System.IO.MemoryStream();
     Storage.BlobContents contents = new Microsoft.Samples.ServiceHosting.StorageClient.BlobContents(ms);
     container.GetBlob(blobName, contents, true);
     DataContracts.BlobContents result = new global::StorageClientService.DataContracts.BlobContents();
     result.Contents = contents.AsBytes();
     return result;
 }
 internal static List<DataContracts.QueueMessage> GetQueueContents(Storage.StorageAccountInfo accountInfo, string queueName, int maxMessages)
 {
     Storage.QueueStorage storage = Storage.QueueStorage.Create(accountInfo);
     List<DataContracts.QueueMessage> result = new List<global::StorageClientService.DataContracts.QueueMessage>();
     Storage.MessageQueue q = storage.GetQueue(queueName);
     if (!q.DoesQueueExist()) return result;
     foreach (var m in q.PeekMessages(maxMessages))
     {
         DataContracts.QueueMessage msg = new global::StorageClientService.DataContracts.QueueMessage()
         {
             Id = m.Id,
             InsertionTime = m.InsertionTime,
             ExpirationTime = m.ExpirationTime,
             TimeNextVisible = m.TimeNextVisible,
             PopReceipt = m.PopReceipt,
             Contents = m.ContentAsBytes()
         };
     }
     return result;
 }
 internal static List<DataContracts.TableProperties> ListTables(Storage.StorageAccountInfo accountInfo)
 {
     Storage.TableStorage storage = Storage.TableStorage.Create(accountInfo);
     List<DataContracts.TableProperties> result = new List<global::StorageClientService.DataContracts.TableProperties>();
     foreach (var t in storage.ListTables())
     {
         DataContracts.TableProperties tp = new global::StorageClientService.DataContracts.TableProperties()
         {
             Name = t
         };
         result.Add(tp);
     }
     return result;
 }
        internal static List<DataContracts.QueueProperties> ListQueues(Storage.StorageAccountInfo accountInfo)
        {
            Storage.QueueStorage storage = Storage.QueueStorage.Create(accountInfo);
            List<DataContracts.QueueProperties> result = new List<global::StorageClientService.DataContracts.QueueProperties>();

            foreach (var mq in storage.ListQueues())
            {
                Storage.QueueProperties qp = mq.GetProperties();
                DataContracts.QueueProperties q = new global::StorageClientService.DataContracts.QueueProperties()
                {
                    ApproximateMessageCount = qp.ApproximateMessageCount,
                    Name = mq.Name,
                    Uri = mq.QueueUri.ToString()
                };

                if (qp.Metadata != null)
                {
                    foreach (string key in qp.Metadata.Keys)
                    {
                        q.Metadata.Add(key, qp.Metadata[key]);
                    }
                }

                result.Add(q);
            }

            return result;
        }
        internal static List<DataContracts.BlobProperties> ListBlobs(Storage.StorageAccountInfo accountInfo, string containerName)
        {
            Storage.BlobStorage storage = Storage.BlobStorage.Create(accountInfo);
            List<DataContracts.BlobProperties> result = new List<global::StorageClientService.DataContracts.BlobProperties>();
            Storage.BlobContainer container = storage.GetBlobContainer(containerName);
            bool doesContainerExist = container.DoesContainerExist();
            if (!doesContainerExist)
            {
                return result;
            }

            var query = from b in container.ListBlobs(string.Empty, false)
                        select b as Storage.BlobProperties;

            foreach (var b in query)
            {
                DataContracts.BlobProperties bp = new global::StorageClientService.DataContracts.BlobProperties()
                {
                    ContentEncoding = b.ContentEncoding,
                    ContentLanguage = b.ContentLanguage,
                    ContentLength = b.ContentLength,
                    ContentType = b.ContentType,
                    ETag = b.ETag,
                    LastModifiedTime = b.LastModifiedTime,
                    Name = b.Name,
                    Uri = b.Uri.ToString()
                };
                bp.Metadata = new Dictionary<string, string>();
                if (b.Metadata != null)
                {
                    foreach (string key in b.Metadata.Keys)
                    {
                        bp.Metadata.Add(key, b.Metadata[key]);
                    }
                }
                result.Add(bp);
            }

            return result;
        }
 internal static List<DataContracts.BlobContainer> ListBlobContainers(Storage.StorageAccountInfo accountInfo)
 {
     Storage.BlobStorage storage = Storage.BlobStorage.Create(accountInfo);
     List<DataContracts.BlobContainer> result = new List<global::StorageClientService.DataContracts.BlobContainer>();
     foreach (var bc in storage.ListBlobContainers())
     {
         Storage.ContainerProperties props = bc.GetContainerProperties();
         Storage.ContainerAccessControl ac = bc.GetContainerAccessControl();
         DataContracts.BlobContainer container = new DataContracts.BlobContainer()
         {
             Name = bc.ContainerName,
             Uri = bc.ContainerUri.ToString(),
             LastModifiedTime = bc.LastModifiedTime,
             ETag = props.ETag,
             AccessControl = (DataContracts.ContainerAccessControl)Enum.Parse(typeof(DataContracts.ContainerAccessControl), ac.ToString(), true)
         };
         container.Metadata = new Dictionary<string, string>();
         if (props.Metadata != null)
         {
             foreach (string key in props.Metadata.Keys)
             {
                 container.Metadata.Add(key, props.Metadata[key]);
             }
         }
         result.Add(container);
     }
     return result;
 }