Exemple #1
0
        public void WebAddress_AnalyzeMetaTags_GetResult()
        {
            WebPage page    = PageFactory.PageFromUrl("https://www.w3schools.com/");
            var     options = new List <Constants.AnalysisOption>();

            options.Add(Constants.AnalysisOption.CountMetaTags);

            SEOService seoService = new SEOService(page, options);
            var        result     = seoService.Analyze();

            Assert.IsTrue(result.MetaTagOccurences["tutorials"] == 6);
        }
Exemple #2
0
        public void WebAddress_GetExternalLinks_GetResult()
        {
            WebPage page    = PageFactory.PageFromUrl("https://www.asp.net/learn");
            var     options = new List <Constants.AnalysisOption>();

            options.Add(Constants.AnalysisOption.GetExternalLinks);

            SEOService seoService = new SEOService(page, options);
            var        result     = seoService.Analyze();

            Assert.IsTrue(result.TotalExternalLink == 57);
            Assert.IsTrue(result.ExternalLinks.Contains("https://www.asp.net/"));
        }
        public ActionResult Analyze(AnalyzeViewModel model)
        {
            SEOResultViewModel resultViewModel = new SEOResultViewModel();

            if (!ModelState.IsValid)
            {
                resultViewModel.IsSuccess = false;
                resultViewModel.Error     = "Invalid input";

                return(Json(resultViewModel));
            }

            if (String.IsNullOrEmpty(model.PageContent) && String.IsNullOrEmpty(model.PageUrl))
            {
                resultViewModel.IsSuccess = false;
                resultViewModel.Error     = "Page URL or page content is required";

                return(Json(resultViewModel));
            }

            if (model.Options == null)
            {
                resultViewModel.IsSuccess = false;
                resultViewModel.Error     = "No analysis option is selected";

                return(Json(resultViewModel));
            }

            try
            {
                WebPage page;

                if (!String.IsNullOrEmpty(model.PageUrl))
                {
                    page = PageFactory.PageFromUrl(model.PageUrl);
                }
                else
                {
                    page = PageFactory.PageFromText(model.PageContent);
                }

                var options = new List <Constants.AnalysisOption>();

                foreach (var o in model.Options)
                {
                    switch (o)
                    {
                    case "countExternalLink":
                        options.Add(Constants.AnalysisOption.GetExternalLinks);
                        break;

                    case "countWords":
                        options.Add(Constants.AnalysisOption.CountWords);
                        break;

                    case "countMetaTag":
                        options.Add(Constants.AnalysisOption.CountMetaTags);
                        break;

                    default:
                        break;
                    }
                }

                SEOService seoService = new SEOService(page, options);
                var        result     = seoService.Analyze();

                resultViewModel.IsSuccess = true;
                List <WordCount> wordCounts = new List <WordCount>();
                foreach (var word in result.WordsOccurences)
                {
                    wordCounts.Add(new WordCount {
                        Word = word.Key, Total = word.Value
                    });
                }

                resultViewModel.WordCount = wordCounts;

                List <WordCount> metaTagsCounts = new List <WordCount>();
                foreach (var word in result.MetaTagOccurences)
                {
                    metaTagsCounts.Add(new WordCount {
                        Word = word.Key, Total = word.Value
                    });
                }

                resultViewModel.MetaTagsCount = metaTagsCounts;

                resultViewModel.ExternalLinks = result.ExternalLinks.ConvertAll(e => new Link {
                    Address = e
                });
            }
            catch (Exception ex)
            {
                resultViewModel.IsSuccess = false;
                resultViewModel.Error     = ex.Message;

                return(Json(resultViewModel));
            }


            return(Json(resultViewModel));
        }