Esempio n. 1
0
        public ActionResult <string> GetRandomWord([FromQuery] GetWordParameters parameters)
        {
            var validationResult = _validator.Validate(parameters);

            if (validationResult.IsValid)
            {
                return(Ok(_wordGeneration.GenerateRandomString(parameters)));
            }
            return(BadRequest(validationResult.Errors));
        }
Esempio n. 2
0
        public string GenerateRandomString(GetWordParameters parameters)
        {
            var validationResult = _validator.Validate(parameters);

            if (!validationResult.IsValid)
            {
                throw new InvalidParametersException(validationResult.Errors);
            }

            var regex = new Regex($"[^{parameters.AllowedCharacters}]");

            var filteredWords = _words
                                .Where(x => x.Length >= parameters.MinLength && x.Length <= parameters.MaxLength)
                                .Where(x => !regex.IsMatch(x))
                                .ToArray();

            if (filteredWords.Length == 0)
            {
                throw new InvalidWordsDictionaryException();
            }
            return(filteredWords[_randomGenerator.Next(0, filteredWords.Length)]
                   .FormatTo(parameters.Format)
                   .EncodeTo(parameters.Encoding));
        }