using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Windows.Azure.Storage { public class BlobContainer : StorageRequest { private string containerName; public BlobContainer(ConnectionDetails connectionDetails) : base(connectionDetails) { } public BlobContainer(ConnectionDetails connectionDetails, string containerName) : base(connectionDetails) { this.containerName = containerName; } public BlobContainerResponse SetContainerPermissions(bool isPublic) { Dictionary queryParams = new Dictionary(); Dictionary functionHeaders = new Dictionary(); queryParams.Add("comp", "acl"); functionHeaders.Add("x-ms-prop-publicaccess", isPublic.ToString().ToLower()); base.InitializeRequest(this.containerName, queryParams); base.SetMethod("PUT"); base.SetFunctionHeaders(functionHeaders); return new BlobContainerResponse(base.DispatchRequest()); } public BlobContainerResponse GetBlobs() { Dictionary queryParams = new Dictionary(); queryParams.Add("comp", "list"); base.InitializeRequest(this.containerName, queryParams); base.SetMethod("GET"); return new BlobContainerResponse(base.DispatchRequest()); } public BlobContainerResponse GetContainers() { Dictionary queryParams = new Dictionary(); queryParams.Add("comp", "list"); base.InitializeRequest(null, queryParams); base.SetMethod("GET"); return new BlobContainerResponse(base.DispatchRequest()); } public BlobContainerResponse Create() { base.InitializeRequest(this.containerName, null); base.SetMethod("PUT"); return new BlobContainerResponse(base.DispatchRequest()); } public BlobContainerResponse Remove() { base.InitializeRequest(this.containerName, null); base.SetMethod("DELETE"); return new BlobContainerResponse(base.DispatchRequest()); } public BlobContainerResponse GetBlobMetadata(string blobName) { Dictionary queryParams = new Dictionary(); queryParams.Add("comp", "metadata"); base.InitializeRequest(String.Format("{0}/{1}", this.containerName, blobName), queryParams); base.SetMethod("HEAD"); return new BlobContainerResponse(base.DispatchRequest()); } public BlobContainerResponse PutBlob(string blobName, byte[] blobContents) { base.InitializeRequest(String.Format("{0}/{1}", this.containerName, blobName), null); base.SetMethod("PUT"); base.SetContent(blobContents); return new BlobContainerResponse(base.DispatchRequest()); } public BlobContainerResponse SetBlobMetadata(string blobName, Dictionary metaData) { Dictionary queryParams = new Dictionary(); queryParams.Add("comp", "metadata"); base.InitializeRequest(String.Format("{0}/{1}", this.containerName, blobName), queryParams); base.SetMethod("PUT"); base.SetFunctionHeaders(metaData); return new BlobContainerResponse(base.DispatchRequest()); } } }