/// <summary> /// Initializes a new instance of the <see cref="CloudBlobContainer"/> class. /// </summary> /// <param name="containerName">The container name.</param> /// <param name="serviceClient">The client to be used.</param> internal CloudBlobContainer(BlobContainerProperties properties, IDictionary<string, string> metadata, string containerName, CloudBlobClient serviceClient) { this.Uri = NavigationHelper.AppendPathToUri(serviceClient.BaseUri, containerName); this.ServiceClient = serviceClient; this.Name = containerName; this.Metadata = metadata; this.Properties = properties; }
/// <summary> /// Initializes a new instance of the <see cref="CloudBlobContainer"/> class. /// </summary> /// <param name="properties">The properties.</param> /// <param name="metadata">The metadata.</param> /// <param name="containerName">The container name.</param> /// <param name="serviceClient">The client to be used.</param> internal CloudBlobContainer(BlobContainerProperties properties, IDictionary <string, string> metadata, string containerName, CloudBlobClient serviceClient) { this.StorageUri = NavigationHelper.AppendPathToUri(serviceClient.StorageUri, containerName); this.ServiceClient = serviceClient; this.Name = containerName; this.Metadata = metadata; this.Properties = properties; }
/// <summary> /// Initializes a new instance of the <see cref="CloudBlobContainer"/> class. /// </summary> /// <param name="properties">The properties.</param> /// <param name="metadata">The metadata.</param> /// <param name="containerName">The container name.</param> /// <param name="serviceClient">The client to be used.</param> internal CloudBlobContainer(BlobContainerProperties properties, IDictionary <string, string> metadata, string containerName, CloudBlobClient serviceClient) { this.StorageUri = NavigationHelper.AppendPathToUri(serviceClient.StorageUri, containerName); this.ServiceClient = serviceClient; // Set the relativized name from the URI. this.Name = NavigationHelper.GetContainerNameFromContainerAddress(this.Uri, this.ServiceClient.UsePathStyleUris); this.Metadata = metadata; this.Properties = properties; }
internal CloudBlobContainer(BlobContainerProperties properties, IDictionary <string, string> metadata, string containerName, CloudBlobClient serviceClient) { throw new System.NotImplementedException(); }
// Get container properties. // Return true on success, false if not found, throw exception on error. public bool GetContainerProperties(string containerName, out BlobContainerProperties properties) { properties = null; try { CloudBlobContainer container = BlobClient.GetContainerReference(containerName); container.FetchAttributes(); properties = container.Properties; return true; } catch (StorageException ex) { if (ex.RequestInformation.HttpStatusCode == 404) { return false; } throw; } }
// Perform blob storage operations. private static void TestBlobStorage() { string storageConnectionString = ConfigurationManager.ConnectionStrings["Storage"].ConnectionString; BlobHelper BlobHelper = new BlobHelper(storageConnectionString); if (!File.Exists("blob1.txt")) File.WriteAllText("blob1.txt", "This is a text blob!"); try { Separator(); List<CloudBlobContainer> containers; Console.Write("List containers "); if (BlobHelper.ListContainers(out containers)) { Console.WriteLine("true"); if (containers != null) { foreach (CloudBlobContainer container in containers) { Console.Write(container.Name + " "); } Console.WriteLine(); } } else { Console.WriteLine("false"); } Separator(); Console.Write("Create container "); if (BlobHelper.CreateContainer("samplecontainer1")) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); Console.Write("Delete container "); if (BlobHelper.DeleteContainer("samplecontainer0")) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); Console.Write("Set container ACL "); if (BlobHelper.SetContainerACL("samplecontainer1", "container")) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); string accessLevel; Console.Write("Get container ACL "); if (BlobHelper.GetContainerACL("samplecontainer1", out accessLevel)) { Console.WriteLine("true " + accessLevel); } else { Console.WriteLine("false"); } Separator(); SortedList<string, SharedAccessBlobPolicy> policies = new SortedList<string, SharedAccessBlobPolicy>(); SharedAccessBlobPolicy policy1 = new SharedAccessBlobPolicy() { Permissions = SharedAccessBlobPermissions.List | SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Delete, SharedAccessStartTime = DateTime.UtcNow, SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1) }; policies.Add("Policy1", policy1); policies.Add("Policy2", new SharedAccessBlobPolicy() { Permissions = SharedAccessBlobPermissions.Read, SharedAccessStartTime = DateTime.Parse("2010-01-01T09:38:05Z"), SharedAccessExpiryTime = DateTime.Parse("2012-12-31T09:38:05Z") }); Console.Write("Set container access policy "); if (BlobHelper.SetContainerAccessPolicy("samplecontainer1", policies)) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); Console.Write("Get container access policy "); if (BlobHelper.GetContainerAccessPolicy("samplecontainer1", out policies)) { Console.WriteLine("true"); if (policies != null) { foreach (KeyValuePair<string, SharedAccessBlobPolicy> policy in policies) { Console.WriteLine("Policy " + policy.Key); } } } else { Console.WriteLine("false"); } Separator(); string signature = String.Empty; Console.Write("Create shared access signature "); if (BlobHelper.GenerateSharedAccessSignature("samplecontainer1", policy1, out signature)) { Console.WriteLine("true " + signature); } else { Console.WriteLine("false"); } Separator(); signature = String.Empty; Console.Write("Create shared access signature from access policy "); if (BlobHelper.GenerateSharedAccessSignature("samplecontainer1", "Policy1", out signature)) { Console.WriteLine("true " + signature); } else { Console.WriteLine("false"); } Separator(); signature = String.Empty; Console.Write("Create shared access signature from access policy 2 "); if (BlobHelper.GenerateSharedAccessSignature("samplecontainer1", "Policy2", out signature)) { Console.WriteLine("true " + signature); } else { Console.WriteLine("false"); } Separator(); BlobContainerProperties containerProperties = new BlobContainerProperties(); Console.Write("Get container properties "); if (BlobHelper.GetContainerProperties("samplecontainer1", out containerProperties)) { Console.WriteLine("true"); Console.WriteLine("BlobContainerProperties.Etag: " + containerProperties.ETag); Console.WriteLine("BlobContainerProperties.LastModifiedUtc: " + containerProperties.LastModified.Value.UtcDateTime); } else { Console.WriteLine("false"); } Separator(); NameValueCollection metadata = new NameValueCollection(); metadata.Add("property1", "Value1"); metadata.Add("property2", "Value2"); metadata.Add("property3", "Value3"); Console.Write("Set container metadata "); if (BlobHelper.SetContainerMetadata("samplecontainer1", metadata)) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); metadata = new NameValueCollection(); Console.Write("Get container metadata "); if (BlobHelper.GetContainerMetadata("samplecontainer1", out metadata)) { Console.WriteLine("true"); if (metadata != null) { for (int i = 0; i < metadata.Count; i++) { Console.WriteLine(metadata.GetKey(i) + ": " + metadata.Get(i)); } } } else { Console.WriteLine("false"); } Separator(); //Console.Write("Delete container container1 "); //if (BlobHelper.DeleteContainer("samplecontainer1")) //{ // Console.WriteLine("true"); //} //else //{ // Console.WriteLine("false"); //} Separator(); List<IListBlobItem> blobs; Console.Write("List blobs "); if (BlobHelper.ListBlobs("samplecontainer1", out blobs)) { Console.WriteLine("true"); if (blobs != null) { foreach (IListBlobItem blob in blobs) { Console.WriteLine(blob.Uri.LocalPath); } } } else { Console.WriteLine("false"); } Separator(); Console.Write("Put blob "); if (BlobHelper.PutBlob("samplecontainer1", "blob1.txt")) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); Console.Write("Put page blob "); if (BlobHelper.PutBlob("samplecontainer1", "pageblob1.txt", 2048)) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); string page0 = new string('A', 512); Console.Write("Put page 0 "); if (BlobHelper.PutPage("samplecontainer1", "pageblob1.txt", page0, 0, 512)) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); string page1 = new string('B', 512); Console.Write("Put page 1 "); if (BlobHelper.PutPage("samplecontainer1", "pageblob1.txt", page1, 512, 512)) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); page0 = String.Empty; Console.Write("Get page 0 "); if (BlobHelper.GetPage("samplecontainer1", "pageblob1.txt", 0, 512, out page0)) { Console.WriteLine("true"); Console.WriteLine(page0); } else { Console.WriteLine("false"); } Separator(); page1 = String.Empty; Console.Write("Get page 1 "); if (BlobHelper.GetPage("samplecontainer1", "pageblob1.txt", 512, 512, out page1)) { Console.WriteLine("true"); Console.WriteLine(page1); } else { Console.WriteLine("false"); } Separator(); PageRange[] ranges; Console.Write("Get page regions "); if (BlobHelper.GetPageRegions("samplecontainer1", "pageblob1.txt", out ranges)) { Console.WriteLine("true"); if (ranges != null) { foreach (PageRange range in ranges) { Console.WriteLine(range.StartOffset.ToString() + "-" + range.EndOffset.ToString()); } } } else { Console.WriteLine("false"); } Separator(); Console.Write("Get blob "); using (Stream content = File.OpenWrite(@"blob1.txt")) { if (BlobHelper.GetBlob("samplecontainer1", "blob1.txt", content)) { Console.WriteLine("true"); Console.WriteLine(content); } else { Console.WriteLine("false"); } } Separator(); Console.Write("Copy blob "); if (BlobHelper.CopyBlob("samplecontainer1", "blob1.txt", "samplecontainer1", "blob2.txt")) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); Console.Write("Snapshot blob "); if (BlobHelper.SnapshotBlob("samplecontainer1", "blob1.txt")) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); Console.Write("Delete blob "); if (BlobHelper.DeleteBlob("samplecontainer1", "blob2.txt")) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); SortedList<string, string> properties = new SortedList<string, string>(); properties.Add("ContentType", "text/html"); Console.Write("Set blob properties "); if (BlobHelper.SetBlobProperties("samplecontainer1", "blob1.txt", properties)) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); Console.Write("Get blob properties "); if (BlobHelper.GetBlobProperties("samplecontainer1", "blob1.txt", out properties)) { Console.WriteLine("true"); foreach (KeyValuePair<string, string> item in properties) { Console.WriteLine(item.Key + ": " + item.Value); } } else { Console.WriteLine("false"); } Separator(); Console.Write("Put blob If Unchanged 1 "); if (BlobHelper.PutBlobIfUnchanged("samplecontainer1", "blob1.txt", properties["ETag"])) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); Console.Write("Put blob If Unchanged 2 "); if (BlobHelper.PutBlobIfUnchanged("samplecontainer1", "blob1.txt", "BadETag")) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); Console.Write("Put blob with MD5 "); if (BlobHelper.PutBlobWithMD5("samplecontainer1", "blob1.txt", "This is a text blob!")) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); metadata.Clear(); metadata.Add("property1", "Value1"); metadata.Add("property2", "Value2"); metadata.Add("property3", "Value3"); metadata.Add("property4", "Value4"); Console.Write("Set blob metadata "); if (BlobHelper.SetBlobMetadata("samplecontainer1", "blob1.txt", metadata)) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); Console.Write("Get blob metadata "); if (BlobHelper.GetBlobMetadata("samplecontainer1", "blob1.txt", out metadata)) { Console.WriteLine("true"); for (int i = 0; i < metadata.Count; i++) { Console.WriteLine(metadata.GetKey(i) + ": " + metadata.Get(i)); } } else { Console.WriteLine("false"); } Separator(); string leaseAction = "acquire"; string leaseId = string.Empty; Console.Write("Lease blob - acquire "); if (BlobHelper.LeaseBlob("samplecontainer1", "blob1.txt", leaseAction, ref leaseId)) { Console.WriteLine("true " + leaseId); } else { Console.WriteLine("false"); } Separator(); leaseAction = "release"; Console.Write("Lease blob - release "); if (BlobHelper.LeaseBlob("samplecontainer1", "blob1.txt", leaseAction, ref leaseId)) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); string[] blockIds = new string[3]; Console.Write("Put block 0 "); if (BlobHelper.PutBlock("samplecontainer1", "largeblob1.txt", 0, blockIds, "AAAAAAAAAA")) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); Console.Write("Put block 1 "); if (BlobHelper.PutBlock("samplecontainer1", "largeblob1.txt", 1, blockIds, "BBBBBBBBBB")) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); Console.Write("Put block 2 "); if (BlobHelper.PutBlock("samplecontainer1", "largeblob1.txt", 2, blockIds, "CCCCCCCCCC")) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } Separator(); string[] getblockids = null; Console.Write("Get block list "); if (BlobHelper.GetBlockList("samplecontainer1", "largeblob1.txt", out getblockids)) { Console.WriteLine("true"); if (getblockids != null) { for (int i = 0; i < getblockids.Length; i++) { Console.WriteLine("Block " + i + " id = " + getblockids[i]); } } } else { Console.WriteLine("false"); } Separator(); Console.Write("Put block list "); if (BlobHelper.PutBlockList("samplecontainer1", "largeblob1.txt", blockIds)) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } } catch (Exception ex) { Console.WriteLine("EXCEPTION " + ex.ToString()); } if (File.Exists("blob1.txt")) File.Delete("blob1.txt"); }
/// <summary> /// Initializes a new instance of the <see cref="CloudBlobContainer"/> class. /// </summary> /// <param name="properties">The properties.</param> /// <param name="metadata">The metadata.</param> /// <param name="containerName">The container name.</param> /// <param name="serviceClient">The client to be used.</param> internal CloudBlobContainer(BlobContainerProperties properties, IDictionary<string, string> metadata, string containerName, CloudBlobClient serviceClient) { this.StorageUri = NavigationHelper.AppendPathToUri(serviceClient.StorageUri, containerName); this.ServiceClient = serviceClient; // Set the relativized name from the URI. this.Name = NavigationHelper.GetContainerNameFromContainerAddress(this.Uri, this.ServiceClient.UsePathStyleUris); this.Metadata = metadata; this.Properties = properties; }