/// <summary> /// Creates a new <see cref="BlobMetadata"/> instance from a <see cref="IDictionary{string, string}"/> of metadata. /// </summary> /// <param name="metadata"></param> /// <returns></returns> internal static BlobMetadata FromDictionary(IDictionary <string, string> metadata, bool isBase64Encoded = true) { BlobMetadata result = new BlobMetadata(); Type t = typeof(BlobMetadata); foreach (var kvp in metadata) { if (t.GetProperty(kvp.Key) == null) { continue; } string value = kvp.Value; if (isBase64Encoded) { //all metadata in storage are currently base64 encoded to bypass ASCII only limitation https://github.com/Azure/azure-sdk-for-net/issues/178 value = Encoding.UTF8.GetString(Convert.FromBase64String(kvp.Value)); } result.m_Metadata[kvp.Key] = value; } return(result); }
/// <summary> /// Create a new <see cref="AzureBlob"/> from an Azure storage blob properties. /// </summary> /// <param name="blobProperties"></param> /// <returns></returns> public static AzureBlob FromBlobProperties(string blobPath, BlobProperties blobProperties, IDictionary <string, string> blobMetadata) { return(new AzureBlob { Path = blobPath, Checksum = blobProperties.ContentMD5, ContentType = blobProperties.ContentType, LastModified = blobProperties.LastModified.Value, Length = blobProperties.Length, Metadata = BlobMetadata.FromDictionary(blobMetadata) }); }
/// <summary> /// Initializes a new instance of the class. /// </summary> /// <param name="stream"></param> /// <param name="metadata"></param> public BlobStreamDecorator(Stream stream, BlobMetadata metadata) { m_Stream = stream ?? throw new ArgumentNullException(nameof(stream)); Metadata = metadata ?? throw new ArgumentNullException(nameof(metadata)); }