using System; using Microsoft.AspNetCore.DataProtection.Infrastructure; using Umbraco.Extensions; namespace Umbraco.Cms.Web.Common.Extensions { /// /// Contains extension methods for the interface. /// public static class ApplicationDiscriminatorExtensions { private static string s_applicationId; /// /// Gets an application id which respects downstream customizations. /// /// /// Hashed to obscure any unintended infrastructure details e.g. the default value is ContentRootPath. /// public static string GetApplicationId(this IApplicationDiscriminator applicationDiscriminator) { if (s_applicationId != null) { return s_applicationId; } if (applicationDiscriminator == null) { throw new ArgumentNullException(nameof(applicationDiscriminator)); } return s_applicationId = applicationDiscriminator.Discriminator.GenerateHash(); } } }