/// <summary>
        /// Create a new accessor to resolve feature behavior based on specified rules.
        /// </summary>
        protected internal FeatureToggleAccessor(
            IFeatureToggleClient featureToggleClient,
            string featureName,
            string defaultTreatment,
            string forceTreatment,
            IDictionary <string, Func <T> > treatments)
        {
            if (defaultTreatment == null)
            {
                throw new InvalidOperationException("Cannot build a feature without default treatment defined.");
            }

            if (!treatments.ContainsKey(defaultTreatment))
            {
                throw new InvalidOperationException("Default treatment does not match a defined treatment.");
            }

            if (!string.IsNullOrEmpty(forceTreatment) && !treatments.ContainsKey(forceTreatment))
            {
                throw new InvalidOperationException("Forced treatment does not match a defined treatment.");
            }

            _client           = featureToggleClient;
            _featureName      = featureName;
            _defaultTreatment = defaultTreatment;
            _forceTreatment   = forceTreatment;
            _treatments       = treatments;
        }
Ejemplo n.º 2
0
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            IFeatureToggleClient _featureToggleClient = context.HttpContext.RequestServices.GetService(typeof(IFeatureToggleClient)) as IFeatureToggleClient;

            if (_featureToggleClient != null)
            {
                if (!_featureToggleClient.IsValid(_toggle))
                {
                    context.Result = new NotFoundResult();
                }
            }
        }
 public ForcedBooleanFeatureAccessorDemo(IFeatureToggleClient featureToggleClient, string forceTreatment)
     : base(
         featureToggleClient,
         featureName: "BooleanFeature",
         defaultTreatment: "Disabled",
         forceTreatment: forceTreatment,
         treatments: new Dictionary <string, Func <bool> >()
 {
     ["Disabled"] = () => false,
     ["Enabled"]  = () => true
 })
 {
 }
 public DateBehaviorAccessorDemo(IFeatureToggleClient featureToggleClient)
     : base(
         featureToggleClient,
         featureName: "DateBehavior",
         defaultTreatment: "ISO",
         forceTreatment: null,
         treatments: new Dictionary <string, Func <Func <DateTime, string> > >()
 {
     ["ISO"]     = () => (date => date.ToString("yyyy-MM-dd")),
     ["English"] = () => (date => date.ToString("MM/dd/yyyy")),
     ["Spanish"] = () => (date => date.ToString("dd/MM/yyyy"))
 })
 {
 }
Ejemplo n.º 5
0
 public FeatureToggleAccessorBuilder(IFeatureToggleClient splitClient, string featureName)
 {
     _splitClient = splitClient;
     _featureName = featureName ?? throw new ArgumentNullException(nameof(featureName));
 }
Ejemplo n.º 6
0
 public static FeatureToggleAccessorBuilder <TArg1, TArg2, TArg3, TResult> CreateFeature <TArg1, TArg2, TArg3, TResult>(
     this IFeatureToggleClient splitClient,
     string featureName)
 => new FeatureToggleAccessorBuilder <TArg1, TArg2, TArg3, TResult>(splitClient, featureName);
Ejemplo n.º 7
0
 public static FeatureToggleAccessorBuilder <T> CreateFeature <T>(
     this IFeatureToggleClient splitClient,
     string featureName)
 => new FeatureToggleAccessorBuilder <T>(splitClient, featureName);
Ejemplo n.º 8
0
        public FeatureToggleClientTests()
        {
            _messageBus = Substitute.For <IMessageBus>();

            _cut = new FeatureToggleClient(NullLogger.Instance, _messageBus);
        }