public void IsInfoTrackBingEngine()
        {
            SearchEngineParserFactory searchEngineParserFactory = new SearchEngineParserFactory();
            ISearchEngineParser       engine = searchEngineParserFactory.getNewSearchEngineParser("Bing", null);

            Assert.IsType <InfotrackBingSearchEngineParser>(engine);
        }
        public void IsInfoTrackGoogleEngine()
        {
            SearchEngineParserFactory searchEngineParserFactory = new SearchEngineParserFactory();
            ISearchEngineParser       engine = searchEngineParserFactory.getNewSearchEngineParser("GOOGLE", null);

            Assert.IsType <InfotrackGoogleSearchEngineParser>(engine);
        }
Пример #3
0
        public async Task <List <SearchResult> > Query(SearchRequest searchRequest)
        {
            try
            {
                SearchEngineParserFactory searchEngineParserFactory = new SearchEngineParserFactory();
                ISearchEngineParser       engine = searchEngineParserFactory.getNewSearchEngineParser(searchRequest.SearchEngine, searchRequest.Keywords);

                string url = engine.constructSearchURL(searchRequest.Keywords, 1);

                EndPointClient endPointClient = new EndPointClient();
                HttpClient     httpClient     = new HttpClient();

                string response = await endPointClient.InvokeEndpoint(httpClient, url);

                Page pageResults = engine.parsePage(response);

                for (int i = 1; i <= pageResults.NumberOfPages;)
                {
                    if (pageResults.Results.Count < 50)
                    {
                        pageResults.Results.AddRange(engine.parseResults(response));

                        //next page
                        i++;
                        url      = engine.constructSearchURL(searchRequest.Keywords, i);
                        response = await endPointClient.InvokeEndpoint(httpClient, url);
                    }
                    else
                    {
                        break;
                    }
                }

                string baseDomain = endPointClient.extractBaseDomain(searchRequest.SearchUrl);
                List <SearchResult> searchResults = filterResults(pageResults, baseDomain);

                return(searchResults);
            }

            catch (Exception ex)
            {
                throw ex;
            }
        }