private List <int> ProcessQuery(SearchEngineConfiguration searchEngine, SearchParams searchParams, out bool isFromCache) { var indexStats = _cacheHelper.Get <List <int> >(searchEngine.Name); isFromCache = true; if (null == indexStats || !searchParams.AllowReadingFromCache) { isFromCache = false; HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(string.Format(searchEngine.Url, searchParams.SearchKeyword, searchParams.NumberOfResultsToConsider)); HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.ASCII); string rawResponse = streamReader.ReadToEnd(); var resultList = Regex.Split(rawResponse, searchEngine.UniqueResultSplitter).Skip(1).Select((a, i) => new { Index = i + 1, Url = a.Split(new Char[] { ' ', '<' })[0] }).ToList(); indexStats = resultList.Where(a => a.Url.ToLower().Contains(searchParams.KeywordForOccurenceCount.ToLower())).Select(a => a.Index).ToList(); _cacheHelper.Add(searchEngine.Name, indexStats); } return(indexStats); }
public ApiClient CreateApiClient(SearchEngineConfiguration searchEngineConfiguration) { return(new ApiClient(searchEngineConfiguration.Name, searchEngineConfiguration.ApiUrl, searchEngineConfiguration.SearchParam, searchEngineConfiguration.Headers, searchEngineConfiguration.Params)); }