Exemplo n.º 1
0
        public IDictionary <string, int> GetMetaTasDetails(SEOParams seoParams)
        {
            var keyWords = default(string);
            var words    = default(IEnumerable <string>);
            var htmlDoc  = _webParserProvider.ParseWebToHtmlDoc(new Uri(seoParams.SearchText));

            HtmlNodeCollection htmlMetaTags = htmlDoc.DocumentNode.SelectNodes("//meta");

            foreach (HtmlNode node in htmlMetaTags)
            {
                if (node.GetAttributeValue("name", "").ToLower() == "keywords")
                {
                    keyWords = node.GetAttributeValue("content", "");
                    if (!string.IsNullOrEmpty(keyWords))
                    {
                        words = Util.SplitSentenceToWords(keyWords);

                        if (seoParams.IsStopWord)
                        {
                            string         JsonStopWordsText = File.ReadAllText(seoParams.SpotWordsPath);
                            IList <string> WordsFromFile     = JsonConvert.DeserializeObject <IList <string> >(JsonStopWordsText);
                            words = words.Where(w => !WordsFromFile.Contains(w));
                        }
                    }
                }
            }
            return(Util.OccurenceOfwords(words));
        }
Exemplo n.º 2
0
        public async Task <JsonResult> AnalyseData(SEOParams seoParams)
        {
            try
            {
                using (HttpClient client = new HttpClient())
                {
                    client.BaseAddress = new Uri(AppConfig.BaseUri);
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    var content = new StringContent(JsonConvert.SerializeObject(seoParams), Encoding.UTF8, "application/json");

                    HttpResponseMessage response = await client.PostAsync(AppConfig.URIPart, content);

                    if (response.IsSuccessStatusCode)
                    {
                        var contents = response.Content.ReadAsStringAsync().Result;
                        return(Json(new { ResponseCode = response.IsSuccessStatusCode, Content = JsonConvert.DeserializeObject(contents) }, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        return(Json(new { ResponseCode = response.IsSuccessStatusCode, Content = "Error Occurred please try again." }, JsonRequestBehavior.AllowGet));
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Logger.Error("Client App Error {method = AnalyseData}", ex);
                return(Json(new { ResponseCode = false, Content = "Error Occurred please try again." }, JsonRequestBehavior.AllowGet));
            }
        }
Exemplo n.º 3
0
        public SEOData GetDetails(SEOParams seoParams)
        {
            var parser = _builder.Build(seoParams.SearchText);

            _data.LinksCount    = seoParams.IsExternalLinks ? parser.GetExternalLinks(seoParams.SearchText) : new Dictionary <string, int>();
            _data.MetatagsCount = seoParams.IsMetaTags ? parser.GetMetaTasDetails(seoParams) : new Dictionary <string, int>();
            _data.WordsCount    = seoParams.IsWordCount ? parser.GetWordsDetails(seoParams) : new Dictionary <string, int>();
            return(_data);
        }
Exemplo n.º 4
0
 public IHttpActionResult Analyse(SEOParams seoParams)
 {
     try
     {
         Logger.Debug($"Post Api called sucess on {DateTime.Now}");
         seoParams.SpotWordsPath = HttpContext.Current.Server.MapPath(@Constant.SpotWordsPath);
         var data = _analyserManager.GetDetails(seoParams);
         return(Ok(JsonConvert.SerializeObject(data)));
     }
     catch (Exception ex)
     {
         Logger.Error("Post Api Error {method = Analyse}", ex);
         return(InternalServerError());
     }
 }
Exemplo n.º 5
0
        public IDictionary <string, int> GetWordsDetails(SEOParams seoParams)
        {
            string webText = _webParserProvider.ParseWebToText(new Uri(seoParams.SearchText));

            IEnumerable <string> words = Util.SplitSentenceToWords(webText.ToLower());

            if (seoParams.IsStopWord)
            {
                string JsonStopWordsText = File.ReadAllText(seoParams.SpotWordsPath);

                IList <string> WordsFromFile = JsonConvert.DeserializeObject <IList <string> >(JsonStopWordsText);

                words = words.Where(w => !WordsFromFile.Contains(w));
            }
            return(Util.OccurenceOfwords(words));
        }
Exemplo n.º 6
0
        public IDictionary <string, int> GetWordsDetails(SEOParams seoParams)
        {
            var words = Util.SplitSentenceToWords(seoParams.SearchText.ToLower());

            if (seoParams.IsStopWord)
            {
                var JsonStopWordsText = File.ReadAllText(seoParams.SpotWordsPath);

                var WordsFromFile = JsonConvert.DeserializeObject <IList <string> >(JsonStopWordsText);

                words = words.Where(w => !WordsFromFile.Contains(w));
            }


            return(Util.OccurenceOfwords(words));
        }
Exemplo n.º 7
0
        public void GetDetialsFromText(bool isExternalLinks, bool isMetaTags, bool isWordCount, bool isStopWord,
                                       string searchText, string spotWordsPath, int linkcount, int metaTagsCount, int wordsCount)
        {
            var anaysler = new AnalyserManager(new SEOBuilderFactory(new WebParserProvider()));

            var @params = new SEOParams()
            {
                IsExternalLinks = isExternalLinks,
                IsMetaTags      = isMetaTags,
                IsWordCount     = isWordCount,
                IsStopWord      = isStopWord,
                SearchText      = searchText,
                SpotWordsPath   = spotWordsPath
            };

            var result = anaysler.GetDetails(@params);

            Assert.AreEqual(result.LinksCount.Count, linkcount);
            Assert.AreEqual(result.MetatagsCount.Count, metaTagsCount);
            Assert.AreEqual(result.WordsCount.Count, wordsCount);
        }
Exemplo n.º 8
0
        public void GetDeatilsFromUrl(bool isExternalLinks, bool isMetaTags, bool isWordCount, bool isStopWord,
                                      string searchText, string spotWordsPath, int linkcount, int metaTagsCount, int wordsCount)
        {
            var @params = new SEOParams()
            {
                IsExternalLinks = isExternalLinks,
                IsMetaTags      = isMetaTags,
                IsWordCount     = isWordCount,
                IsStopWord      = isStopWord,
                SearchText      = searchText,
                SpotWordsPath   = spotWordsPath
            };
            var data = new SEOData();
            var mockwebParserProvider = Substitute.For <IWebParserProvider>();
            var SEOAnalyserProvider   = Substitute.For <ISEOAnalyserProvider>();
            var mockSEOBuilderFactory = Substitute.For <ISEOBuilderFactory>();

            IDictionary <string, int> linksCount = new Dictionary <string, int>();

            linksCount.Add("hello", 1);
            linksCount.Add("batman", 10);

            IDictionary <string, int> metaTags = new Dictionary <string, int>();

            metaTags.Add("animal", 1);
            metaTags.Add("design", 1);

            SEOAnalyserProvider.GetExternalLinks(@params.SearchText).Returns(linksCount);
            SEOAnalyserProvider.GetMetaTasDetails(@params).Returns(metaTags);
            SEOAnalyserProvider.GetWordsDetails(@params).Returns(new Dictionary <string, int>());
            mockSEOBuilderFactory.Build(@params.SearchText).Returns(SEOAnalyserProvider);
            var AnalyserManager = new AnalyserManager(mockSEOBuilderFactory, data);


            var result = AnalyserManager.GetDetails(@params);

            Assert.AreEqual(result.LinksCount.Count, linksCount.Count);
            Assert.AreEqual(result.MetatagsCount.Count, metaTags.Count);
        }
Exemplo n.º 9
0
 public IDictionary <string, int> GetMetaTasDetails(SEOParams seoParams)
 {
     return(new Dictionary <string, int>());
 }