Example #1
0
        public void SelectsAnagramsOfAWordFromAGivenList()
        {
            AnagramList selector  = new AnagramList();
            var         selection = selector.SelectAnagrams("master",
                                                            new List <string> {
                "stream", "something", "maters"
            });

            Assert.True(selection.SequenceEqual(
                            new List <string> {
                "stream", "maters"
            }));
        }
        public IActionResult Index(string phrase = "")
        {
            AnagramList anagramList = new AnagramList();

            IList <string> anagrams = new List <string>();

            string ipAddress = HttpContext.Connection.RemoteIpAddress.ToString();


            ViewBag.Message = "";

            if (!string.IsNullOrWhiteSpace(phrase))
            {
                bool access = _userService.CheckIPLimit(ipAddress);

                if (access)
                {
                    anagrams = _cacheService.GetAnagramsFromCache(phrase);

                    if (anagrams.Count() == 0)
                    {
                        anagrams = _requestService.DetectAnagrams(phrase);
                    }

                    _cacheService.InsertWordToCache(phrase, anagrams);

                    _userService.InsertToUserLog(phrase, ipAddress);

                    _userService.DecrementCounter(ipAddress);
                }
                else
                {
                    ViewBag.Message = "Number of requests exceeded. Insert new word to gain access";
                }
            }

            anagramList.Anagrams = anagrams;

            return(View(anagramList));
        }