BlobAudience
Audiences available for Blobs
            
                using Azure.Storage.Common;
using System;
using System.ComponentModel;
namespace Azure.Storage.Blobs.Models
{
    public readonly struct BlobAudience : IEquatable<BlobAudience>
    {
        private readonly string _value;
        private const string _defaultAudience = "https://storage.azure.com/";
        public static BlobAudience DefaultAudience { get; } = new BlobAudience("https://storage.azure.com/");
        public BlobAudience(string value)
        {
            Argument.AssertNotNullOrEmpty(value, "value");
            _value = value;
        }
        public static BlobAudience CreateBlobServiceAccountAudience(string storageAccountName)
        {
            return new BlobAudience("https://" + storageAccountName + ".blob.core.windows.net/");
        }
        public static bool operator ==(BlobAudience left, BlobAudience right)
        {
            return left.Equals(right);
        }
        public static bool operator !=(BlobAudience left, BlobAudience right)
        {
            return !left.Equals(right);
        }
        public static implicit operator BlobAudience(string value)
        {
            return new BlobAudience(value);
        }
        [EditorBrowsable(EditorBrowsableState.Never)]
        public override bool Equals(object obj)
        {
            if (obj is BlobAudience) {
                BlobAudience other = (BlobAudience)obj;
                return Equals(other);
            }
            return false;
        }
        public bool Equals(BlobAudience other)
        {
            return string.Equals(_value, other._value, StringComparison.InvariantCultureIgnoreCase);
        }
        [EditorBrowsable(EditorBrowsableState.Never)]
        public override int GetHashCode()
        {
            return _value?.GetHashCode() ?? 0;
        }
        public override string ToString()
        {
            return _value;
        }
        internal string CreateDefaultScope()
        {
            if (_value.EndsWith("/", StringComparison.InvariantCultureIgnoreCase))
                return _value + "/.default";
            return _value + "//.default";
        }
    }
}