Exemplo n.º 1
0
        public bool ValidateRegex(PuzzleAnswerDTO puzzleAnswers)
        {
            // Get the puzzles from the repository
            var puzzleDictionary = regexPuzzleRepository.GetRegexPuzzle().ToDictionary(k => k.Id, v => v);


            foreach (var p in puzzleAnswers.Answer)
            {
                if (!puzzleDictionary.ContainsKey(p.Id))
                {
                    throw new Exception("Unable to find the puzzle with the id " + p.Id);
                }
                var puzzle = puzzleDictionary[p.Id];

                MatchCollection mc = Regex.Matches(puzzle.Problem, p.Regex, RegexOptions.Multiline);

                var result = "";
                foreach (Match m in mc)
                {
                    result += m.Value;
                    result += Environment.NewLine;
                }

                // Replace \n with \r\n since the puzzle file is using \n for newline where as matched
                // regex uses \r\n
                var goalwithNewline = puzzle.Goal.Replace("\n", Environment.NewLine);

                if (result != goalwithNewline)
                {
                    return(false);
                }
            }

            // Submit result
            regexPuzzleRepository.SubmitPuzzleResult(new PuzzleResult {
                Name          = puzzleAnswers.Name,
                DateSubmitted = DateTime.Now,
                Email         = puzzleAnswers.Email,
                RegexAnswers  = string.Join(Environment.NewLine, puzzleAnswers.Answer.Select(a => a.Regex).ToList())
            });

            return(true);
        }
Exemplo n.º 2
0
 public bool ValidateRegex([FromBody] PuzzleAnswerDTO answers)
 {
     return(regexPuzzleService.ValidateRegex(answers));
 }