Пример #1
0
        public ArgumentsRule(
            Func <AppliedOption, string> validate,
            IReadOnlyCollection <string> allowedValues = null,
            Func <string> defaultValue = null,
            string description         = null,
            string name = null,
            Func <ParseResult, IEnumerable <string> > suggest = null)
        {
            if (validate == null)
            {
                throw new ArgumentNullException(nameof(validate));
            }

            this.defaultValue = new Lazy <string>(defaultValue ?? (() => null));
            Description       = description;
            Name          = name;
            this.validate = validate;

            if (suggest == null)
            {
                this.suggest = result =>
                               AllowedValues.FindSuggestions(result);
            }
            else
            {
                this.suggest = result =>
                               suggest(result).ToArray()
                               .FindSuggestions(
                    result.TextToMatch());
            }

            AllowedValues = allowedValues ?? Array.Empty <string>();
        }
Пример #2
0
        /// <inheritdoc />
        public Task Authorize(AuthorizationContext context)
        {
            bool found = false;

            if (context.User != null)
            {
                if (AllowedValues == null || !AllowedValues.Any())
                {
                    found = context.User.Claims.Any(
                        claim => string.Equals(claim.Type, ClaimType, StringComparison.OrdinalIgnoreCase));
                }
                else
                {
                    found = context.User.Claims.Any(
                        claim => string.Equals(claim.Type, ClaimType, StringComparison.OrdinalIgnoreCase) &&
                        AllowedValues.Contains(claim.Value, StringComparer.Ordinal));
                }
            }

            if (!found)
            {
                if (AllowedValues != null && AllowedValues.Any())
                {
                    string values = string.Join(", ", DisplayValues ?? AllowedValues);
                    context.ReportError($"Required claim '{ClaimType}' with any value of '{values}' is not present.");
                }
                else
                {
                    context.ReportError($"Required claim '{ClaimType}' is not present.");
                }
            }

            return(Task.CompletedTask);
        }
        private string BuildButton(WorkItemStatus statusValue)
        {
            var classes = new List <string>()
            {
                "ui", "button"
            };

            var isCurrentValue = false;

            if (CurrentValue.HasValue)
            {
                if (CurrentValue == statusValue)
                {
                    classes.Add("active");
                    isCurrentValue = true;
                }
            }
            else
            {
                if (statusValue == DefaultValue)
                {
                    classes.Add("active");
                    isCurrentValue = true;
                }
            }

            if (AllowedValues != null && !AllowedValues.Contains(statusValue) && !isCurrentValue)
            {
                classes.Add("disabled");
            }

            var buttonTemplate = $"<button type=\"button\" data-status=\"{statusValue}\" class=\"{string.Join(" ", classes)}\">{statusValue.GetDisplayName()}</button>";

            return(buttonTemplate);
        }
Пример #4
0
 public DocumentAttribute Mutate(string onInvalid, string description)
 {
     return(new DocumentAttribute(Name,
                                  AllowedRegExps.ToList(),
                                  AllowedValues.ToList(),
                                  !string.IsNullOrEmpty(onInvalid) ? onInvalid : OnInvalid,
                                  !string.IsNullOrEmpty(description) ? description : Description));
 }
        /// <inheritdoc />
        public override string ToString()
        {
            var value = (AllowedValues == null || !AllowedValues.Any())
                ? string.Empty
                : $" and `{ClaimConstants.Scp}` or `{ClaimConstants.Scope}` is one of the following values: ({string.Join("|", AllowedValues)})";

            return($"{nameof(ScopeAuthorizationRequirement)}:Scope={value}");
        }
Пример #6
0
 public void ValidatePredictionValue_Pass()
 {
     AllowedValues.ValidatePredictionValue("", "");
     AllowedValues.ValidatePredictionValue(".", "");
     AllowedValues.ValidatePredictionValue("P", "");
     AllowedValues.ValidatePredictionValue("Likely Benign", "");
     AllowedValues.ValidatePredictionValue("Vus", "");
 }
Пример #7
0
 /// <summary>
 /// Проверить значение, уже десериализованное, на вхождение в AllowedValues
 /// </summary>
 void CheckByAllowedValues(object value, string valueSrc, bool isFromCmd)
 {
     if (AllowedValues?.Length > 0 &&
         AllowedValues.Where(x => x != null).All(x => !CompareWithAllowedValue(value, x)))
     {
         string e = $"Argument [{Name}]: value [{valueSrc}] is not allowed";
         throw isFromCmd ? (Exception) new CmdException(e) : new ConfException(e);
     }
 }
Пример #8
0
        public void Sanitize(Value value)
        {
            value.FieldName = Name ?? string.Empty;
            string sanitizedValue = TrimField ? value.OriginalValue.Trim()
                                              : value.OriginalValue;

            //If it wasn't in the original file, handle it in advance
            if (value.Missing || sanitizedValue == string.Empty)
            {
                if (!AllowedBlank)
                {
                    value.ErrorMsg = ValueIfBlank;
                }
                return;
            }

            //Removes any disallowed characters and retains only allowed characters
            var chars = sanitizedValue.ToCharArray();

            if (AllowedCharacters.Any())
            {
                chars = chars.Where(c => AllowedCharacters.Any(a => a == c)).ToArray();
            }
            if (DisallowedCharacters.Any())
            {
                chars = chars.Where(c => !DisallowedCharacters.Any(d => d == c)).ToArray();
            }

            //validate the length
            if (chars.Length > MaxLength ||
                chars.Length < MinLength)
            {
                value.SanitizedValue = new string(chars);
                value.ErrorMsg       = ValueIfWrongLength;
                return;
            }

            //run regex
            sanitizedValue = new string(chars);
            if (RegEx != string.Empty && !Regex.IsMatch(sanitizedValue, RegEx))
            {
                value.ErrorMsg = "Value failed regex check on value.";
                return;
            }

            //run any custom checks
            value.SanitizedValue = RemoveDoubleSpaces(sanitizedValue); //remove any double spaces
            CustomChecks.ForEach(c => c.Execute(value));

            //If this there are a fixed number of options, check for them
            if ((AllowedValues?.Count() ?? 0) != 0 &&
                !AllowedValues.Any(v => v == value.SanitizedValue))
            {
                value.ErrorMsg = ValueIfNotInAllowedOptions;
            }
        }
        public override void ToggleValue()
        {
            try
            {
                var currentIndex = AllowedValues.IndexOf(Value);
                var newIndex     = currentIndex + 1 >= AllowedValues.Count ? 0 : currentIndex + 1;

                Value = AllowedValues[newIndex];
            }
            catch
            {
                Value = (string)DefaultValue;
            }
        }
Пример #10
0
        public string MatcherRegEx(bool hasNext)
        {
            // <p (id=#([0-9.*{6})|sdf).*>

            var regExp = new StringBuilder();

            regExp.Append(Name)
            .Append(Consts.ANY_NORMAL_WHITESPACES)
            .Append("=")
            .Append(Consts.ANY_NORMAL_WHITESPACES)
            .Append("\"")
            .Append(Consts.OPEN_ATTRIBUTE);

            bool hasRegExps = AllowedRegExps.Any();

            if (AllowedRegExps.Count() + AllowedValues.Count() > 0)
            {
                foreach (string allowedValue in AllowedValues)
                {
                    regExp.Append(DocumentTag.EscapeRegularExpressionCharacters(allowedValue));

                    if (AllowedValues.Last() != allowedValue || hasRegExps)
                    {
                        regExp.Append(Consts.ATTRIBUTE_DIVIDER);
                    }
                }

                foreach (string allowedRegExp in AllowedRegExps)
                {
                    regExp.Append(allowedRegExp);
                    if (AllowedRegExps.Last() != allowedRegExp)
                    {
                        regExp.Append(Consts.ATTRIBUTE_DIVIDER);
                    }
                }

                if (this.AllowedRegExps.Count() + this.AllowedValues.Count() > 0)
                {
                    regExp.Append(Consts.CLOSE_ATTRIBUTE);
                }

                regExp.Append("\"" + Consts.ANY_NORMAL_WHITESPACES);

                if (hasNext)
                {
                    regExp.Append(Consts.ATTRIBUTE_DIVIDER);
                }
            }
            return(regExp.ToString());
        }
Пример #11
0
        public bool IsValidForCharacter([NotNull] CharacterInfo character)
        {
            if (character == null)
            {
                throw new ArgumentNullException(nameof(character));
            }

            var fieldValues  = character.Fields.SingleOrDefault(f => f.FieldId == FieldId)?.FieldValue?.Split(',');
            var allowByField = FieldId == 0 || AllowedValues.Intersect(fieldValues ?? Enumerable.Empty <string>()).Any();
            var allowByGroup = ShowForGroups.Length == 0 ||
                               ShowForGroups.Intersect(character.Groups.Select(g => g.CharacterGroupId)).Any();
            var disallowByGroup = SkipForGroups.Intersect(character.Groups.Select(g => g.CharacterGroupId)).Any();

            return(allowByField && allowByGroup && !disallowByGroup);
        }
Пример #12
0
        private HashSet <object> GetAllowedValues(ValidationContext validationContext)
        {
            if (AllowedValuesProvider is null)
            {
                return(AllowedValues.ToHashSet());
            }

            var instance = validationContext.ObjectInstance;
            var type     = instance.GetType();
            var member   = type.GetMember(
                AllowedValuesProvider,
                MemberTypes.Field | MemberTypes.Property | MemberTypes.Method,
                BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static
                )
                           .FirstOrDefault();

            if (member is null)
            {
                throw new ArgumentException(
                          $"{nameof(AllowedValuesProvider)} must reference a field or method in {type.FullName}",
                          AllowedValuesProvider
                          );
            }

            var providedValues = member.MemberType switch
            {
                MemberTypes.Field => ((FieldInfo)member).GetValue(instance),
                MemberTypes.Property => ((PropertyInfo)member).GetValue(instance),
                MemberTypes.Method => ((MethodInfo)member).Invoke(instance, new object?[] { }),
                _ => throw new ArgumentOutOfRangeException(
                          $"{nameof(AllowedValuesProvider)} is not a valid member on {type.FullName}",
                          AllowedValuesProvider
                          )
            };

            if (providedValues is not IEnumerable <object> providedAllowedValues)
            {
                throw new ArgumentException(
                          $"{nameof(AllowedValuesProvider)} on {type.FullName} must implement {nameof(IEnumerable)}",
                          AllowedValuesProvider
                          );
            }

            return(AllowedValues
                   .Concat(providedAllowedValues)
                   .ToHashSet());
        }
    }
Пример #13
0
        public string this[string columnName]
        {
            get
            {
                string msg = null;

                if (string.IsNullOrEmpty(To) || string.IsNullOrWhiteSpace(To))
                {
                    msg = "соответствие не может быть пустым";
                }
                else if (AllowedValues.Count > 0 && !AllowedValues.Contains(To))
                {
                    msg = "введено нестандартное значение";
                }
                return(msg);
            }
        }
Пример #14
0
        public MappingsContainer CopyFrom(MappingsContainer source)
        {
            this.Owner = source.Owner;
            this.AbsoluteCoincidence = source.AbsoluteCoincidence;

            this.Clear();
            foreach (var item in source)
            {
                Add((new Mapping()).CopyFrom(item));
            }

            AllowedValues.Clear();
            foreach (var item in source.AllowedValues)
            {
                AllowedValues.Add(item);
            }

            return(this);
        }
Пример #15
0
        private bool IsAttributeValid(string attributeName, string value)
        {
            if (AllowedAttributes != null)
            {
                // No attributes are allowed
                if (!AllowedAttributes.Any())
                {
                    return(false);
                }

                if (!AllowedAttributes.Contains(attributeName))
                {
                    return(false);
                }
            }

            if (RequiredAttributes != null)
            {
                if (value == null && RequiredAttributes.Contains(attributeName))
                {
                    // Don't delete any required attributes
                    return(false);
                }
            }

            if (AllowedValues != null)
            {
                if (AllowedValues.TryGetValue(attributeName, out var allowed) && !allowed.Contains(value.Trim()))
                {
                    return(false);
                }
            }

            if (DisallowedValues != null)
            {
                if (DisallowedValues.TryGetValue(attributeName, out var disallowed) && disallowed.Contains(value.Trim()))
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #16
0
        private bool _IsSimple()
        {
            var byNumTrue = AllowedValues
                            .GroupBy(av => av.Count(av => av));

            if (byNumTrue.Count() != 2)
            {
                return(false);
            }

            if (byNumTrue.SingleOrDefault(bnt => bnt.Key == 9)?.Count() != 13)
            {
                return(false);
            }
            if (byNumTrue.SingleOrDefault(bnt => bnt.Key == 1)?.Count() != 1)
            {
                return(false);
            }

            return(true);
        }
Пример #17
0
 public int ToIntValue()
 {
     return(AllowedValues.IndexOf(Value));
 }
Пример #18
0
        public MySettingsController()
        {
            Get("/api/v1/me/setting/get", _ => {
                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameters(new[] { "key" }),
                }, true);
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }

                var settingKey = GetRequestStr("key");

                if (!AllowedValues.GetAllowed().ContainsKey(settingKey))
                {
                    new HttpError(HttpStatusCode.UnprocessableEntity, "This setting key is not allowed");
                }

                var me      = UserRepository.Find(CurrentRequest.UserId);
                var setting = UserSetting.Find(me, settingKey);

                setting ??= UserSettingRepository.SetSetting(me, settingKey, "");

                return(HttpResponse.Item("setting", new UserSettingTransformer().Transform(setting)));
            });

            Get("/api/v1/me/settings/get", _ => {
                var me = UserRepository.Find(CurrentRequest.UserId);

                var settings = UserSettingRepository.Get(me);

                return(HttpResponse.Item("settings", new UserSettingTransformer().Many(settings)));
            });

            Patch("/api/v1/me/setting/set", _ => {
                var errors = ValidationProcessor.Process(Request, new IValidatorRule[] {
                    new ShouldHaveParameters(new[] { "key", "value" }),
                }, true);
                if (errors.Count > 0)
                {
                    return(HttpResponse.Errors(errors));
                }

                var settingKey = GetRequestStr("key");

                if (!AllowedValues.GetAllowed().ContainsKey(settingKey))
                {
                    return(HttpResponse.Error(
                               new HttpError(HttpStatusCode.UnprocessableEntity, "This setting key is not allowed")
                               ));
                }

                var settingValue = GetRequestStr("value");

                if (
                    AllowedValues.GetAllowed()[settingKey] != null &&
                    !AllowedValues.GetAllowed()[settingKey].Contains(settingValue)
                    )
                {
                    return(HttpResponse.Error(new HttpError(HttpStatusCode.Forbidden,
                                                            "This setting value is not allowed")));
                }

                var me = UserRepository.Find(CurrentRequest.UserId);

                var setting = UserSettingRepository.SetSetting(
                    me, settingKey, GetRequestStr("value")
                    );

                return(HttpResponse.Item("setting", new UserSettingTransformer().Transform(setting)));
            });
        }
Пример #19
0
 public void IsEmptyValue_AsExpected()
 {
     Assert.True(AllowedValues.IsEmptyValue(""));
     Assert.True(AllowedValues.IsEmptyValue("."));
     Assert.False(AllowedValues.IsEmptyValue("-"));
 }
Пример #20
0
 public void ValidatePredictionValue_ThrowException()
 {
     Assert.Throws <UserErrorException>(() => AllowedValues.ValidatePredictionValue("LikelyBenign", ""));
     Assert.Throws <UserErrorException>(() => AllowedValues.ValidatePredictionValue("Likely Benign, LB", ""));
 }
 public override bool IsValid(object?value) => AllowedValues.Contains(value?.ToString());
Пример #22
0
        public IModSetting ToSetting(IHasModSettings owner)
        {
            switch (Type)
            {
            case SettingType.Boolean:
                return(new BooleanModSetting(owner, Name, LoadTime, Ordering, DefaultValue.GetBoolean()));

            case SettingType.Integer:
                if ((AllowedValues == null) || (AllowedValues.Length == 0))
                {
                    return(new IntegerModSetting(owner, Name, LoadTime, Ordering, DefaultValue.GetInteger(), MinValue?.GetInteger() ?? long.MinValue, MaxValue?.GetInteger() ?? long.MaxValue));
                }
                else
                {
                    return(new IntegerListModSetting(owner, Name, LoadTime, Ordering, DefaultValue.GetInteger(), AllowedValues.Select(value => value.GetInteger())));
                }

            case SettingType.FloatingPoint:
                if ((AllowedValues == null) || (AllowedValues.Length == 0))
                {
                    return(new FloatingPointModSetting(owner, Name, LoadTime, Ordering, DefaultValue.GetFloatingPoint(), MinValue?.GetFloatingPoint() ?? decimal.MinValue, MaxValue?.GetFloatingPoint() ?? decimal.MaxValue));
                }
                else
                {
                    return(new FloatingPointListModSetting(owner, Name, LoadTime, Ordering, DefaultValue.GetFloatingPoint(), AllowedValues.Select(value => value.GetFloatingPoint())));
                }

            case SettingType.String:
                if ((AllowedValues == null) || (AllowedValues.Length == 0))
                {
                    return(new StringModSetting(owner, Name, LoadTime, Ordering, DefaultValue.GetString(), AllowEmptyValue));
                }
                else
                {
                    return(new StringListModSetting(owner, Name, LoadTime, Ordering, DefaultValue.GetString(), AllowedValues.Select(value => value.GetString())));
                }
            }

            return(null);
        }
Пример #23
0
        /// <summary>
        /// Creates a new PlayingCard instance
        /// </summary>
        /// <param name="value">The card's value</param>
        /// <param name="suit">The card's suit</param>
        public PlayingCard(AllowedValues value, AllowedSuits suit)
        {
            Value = value;

            Suit = suit;
        }
Пример #24
0
 /// <summary>
 /// Retrive the string counterpart to the AllowedValues enum value
 /// </summary>
 /// <param name="value">Card value from AllowedValues</param>
 /// <returns>String representing the provided value</returns>
 public static string GetValueString(AllowedValues value)
 {
     return(ValueStrings[(int)value]);
 }
Пример #25
0
 public AcColumnInfo AddAllowedValue(string[] InValues)
 {
     AllowedValues.AddRange(InValues);
     return(this);
 }
Пример #26
0
        public void LoadAllowedValues(string[] values)
        {
            if (values == null)
            {
                return;
            }
            AllowedValues.Clear();
            if (Owner.FieldName == "Размер")
            {
                foreach (var value in values)
                {
                    var sizes = Settings.SettingsProvider.AllowedSizes.Where(s => s.Name == value).ToArray();
                    foreach (var size in sizes)
                    {
                        var type = Settings.SettingsProvider.AllowedTypes.Where(t => t.Id == size.FkTypeId).FirstOrDefault();
                        if (type != null)
                        {
                            AllowedValues.Add(value + " (" + type.Name + ")");
                        }
                    }
                }
            }
            else if (Owner.FieldName == "Район")
            {
                List <string> regionsAdded = new List <string>();

                var cities           = Settings.SettingsProvider.AllowedCities.OrderBy(item => item.Name).ToArray();
                var regionsForCities = Settings.SettingsProvider.AllowedRegions.Where(r => values.Contains(r.Name) && cities.Any(city => r.FkCityId == city.Id)).ToArray();

                foreach (var city in cities)
                {
                    var regions = regionsForCities.Where(r => r.FkCityId == city.Id).ToArray();
                    foreach (var region in regions)
                    {
                        regionsAdded.Add(region.Name);
                        AllowedValues.Add(region.Name + " (" + city.Name + ")");
                    }
                }

                foreach (var value in values.Where(val => !regionsAdded.Contains(val)))
                {
                    AllowedValues.Add(value);
                }
                //foreach (var value in values)
                //{
                //    var regions = Settings.SettingsProvider.AllowedRegions.Where(r => r.Name == value).ToArray();
                //    foreach (var region in regions)
                //    {
                //        var city = Settings.SettingsProvider.AllowedCities.Where(c => c.Id == region.FkCityId).FirstOrDefault();
                //        AllowedValues.Add(value + " (" + city.Name + ")");
                //    }
                //}
            }
            else
            {
                foreach (var value in values)
                {
                    AllowedValues.Add(value);
                }
            }
        }
 /// <summary>
 /// List of field's available allowed values as object of class T which is ought to be implemented by user of this method.
 /// Conversion from serialized JObject to custom class T takes here place.
 /// </summary>
 public IEnumerable <T> AllowedValuesAs <T>()
 {
     return(AllowedValues.Values <JObject>().Select(x => x.ToObject <T>()));
 }