public ActionResult <string> GetRandomWord([FromQuery] GetWordParameters parameters) { var validationResult = _validator.Validate(parameters); if (validationResult.IsValid) { return(Ok(_wordGeneration.GenerateRandomString(parameters))); } return(BadRequest(validationResult.Errors)); }
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)); }