public static string ToFormatedString(this FeaturePolicyConstants.HttpFeatures directive)
 {
     return(directive switch
     {
         FeaturePolicyConstants.HttpFeatures.Accelerometer => Accelerometer,
         FeaturePolicyConstants.HttpFeatures.AmbientLightSensor => AmbientLightSensor,
         FeaturePolicyConstants.HttpFeatures.Autoplay => Autoplay,
         FeaturePolicyConstants.HttpFeatures.Battery => Battery,
         FeaturePolicyConstants.HttpFeatures.Camera => Camera,
         FeaturePolicyConstants.HttpFeatures.DisplayCapture => DisplayCapture,
         FeaturePolicyConstants.HttpFeatures.DocumentDomain => DocumentDomain,
         FeaturePolicyConstants.HttpFeatures.EncryptedMedia => EncryptedMedia,
         FeaturePolicyConstants.HttpFeatures.ExecutionWhileNotRendered => ExecutionWhileNotRendered,
         FeaturePolicyConstants.HttpFeatures.ExecutionWhileOutOfViewport => ExecutionWhileOutOfViewport,
         FeaturePolicyConstants.HttpFeatures.Fullscreen => Fullscreen,
         FeaturePolicyConstants.HttpFeatures.Geolocation => Geolocation,
         FeaturePolicyConstants.HttpFeatures.Gyroscope => Gyroscope,
         FeaturePolicyConstants.HttpFeatures.LayoutAnimations => LayoutAnimations,
         FeaturePolicyConstants.HttpFeatures.LegacyImageFormats => LegacyImageFormats,
         FeaturePolicyConstants.HttpFeatures.NavigationOverride => NavigationOverride,
         FeaturePolicyConstants.HttpFeatures.Magnetometer => Magnetometer,
         FeaturePolicyConstants.HttpFeatures.Microphone => Microphone,
         FeaturePolicyConstants.HttpFeatures.Midi => Midi,
         FeaturePolicyConstants.HttpFeatures.OversizedImages => OversizedImages,
         FeaturePolicyConstants.HttpFeatures.Payment => Payment,
         FeaturePolicyConstants.HttpFeatures.PictureInPicture => PictureInPicture,
         FeaturePolicyConstants.HttpFeatures.PublickeyCredentials => PublickeyCredentials,
         FeaturePolicyConstants.HttpFeatures.Speaker => Speaker,
         FeaturePolicyConstants.HttpFeatures.SyncXhr => SyncXhr,
         FeaturePolicyConstants.HttpFeatures.Usb => Usb,
         FeaturePolicyConstants.HttpFeatures.WakeLock => WakeLock,
         FeaturePolicyConstants.HttpFeatures.XrSpatialTracking => XrSpatialTracking,
         _ => Accelerometer
     });
 /// <summary>
 /// Adds a list of features to which the provided directive is applied.
 /// </summary>
 /// <param name="directive">Directive to apply.</param>
 /// <param name="features">Features.</param>
 /// <param name="hostSources">List of source uri if the directive requires one.</param>
 /// <returns></returns>
 public SecurityHeadersBuilder AddFeaturePolicy(CommonPolicyDirective.Directive directive, FeaturePolicyConstants.HttpFeatures features, IList <Uri> hostSources = null)
 {
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.Accelerometer))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.Accelerometer, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.AmbientLightSensor))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.AmbientLightSensor, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.Autoplay))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.Autoplay, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.Battery))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.Battery, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.Camera))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.Camera, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.DisplayCapture))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.DisplayCapture, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.DocumentDomain))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.DocumentDomain, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.EncryptedMedia))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.EncryptedMedia, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.ExecutionWhileNotRendered))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.ExecutionWhileNotRendered, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.ExecutionWhileOutOfViewport))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.ExecutionWhileOutOfViewport, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.Fullscreen))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.Fullscreen, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.Geolocation))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.Geolocation, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.Gyroscope))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.Gyroscope, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.Magnetometer))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.Magnetometer, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.Microphone))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.Microphone, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.Midi))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.Midi, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.Payment))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.Payment, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.PictureInPicture))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.PictureInPicture, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.PublickeyCredentials))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.PublickeyCredentials, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.Speaker))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.Speaker, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.SyncXhr))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.SyncXhr, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.Usb))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.Usb, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.WakeLock))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.WakeLock, directive);
     }
     if (features.HasFlag(FeaturePolicyConstants.HttpFeatures.XrSpatialTracking))
     {
         _features.TryAdd(FeaturePolicyConstants.HttpFeatures.XrSpatialTracking, directive);
     }
     _policy.SetHeaders[FeaturePolicyConstants.Header] = FeaturesToString(hostSources);
     return(this);
 }