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); }
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; } }