private IEnumerable <Task <WebResponse> > SubmitWebRequests(string keywords) { if (string.IsNullOrWhiteSpace(keywords)) { throw new ReadableException($"Keywords must not be null or whitespace."); } if (totalResults < pageSize || (totalResults % pageSize != 0)) { throw new ReadableException("Total results must be >= page size and equally divisible!"); } var webRequestTasks = new List <Task <WebResponse> >(); var delimitedKeywords = GoogleStringUtilities.ConvertKeywordsToSearchTerms(keywords); var pagesToSearch = totalResults / pageSize; for (var pageIndex = 0; pageIndex < pagesToSearch; pageIndex++) { string uri = $"{baseSearchableUrl}{delimitedKeywords}&start={pageIndex * pageSize}"; var request = (HttpWebRequest)WebRequest.Create(uri); var responseTask = request.GetResponseAsync(); webRequestTasks.Add(responseTask); } return(webRequestTasks); }
public void ConvertKeywordsToSearchTerms_ReturnsOriginalKeyword_GivenSingleKeyword() { var keywords = "online"; var result = GoogleStringUtilities.ConvertKeywordsToSearchTerms(keywords); Assert.IsTrue(string.Equals(result, "online", StringComparison.InvariantCultureIgnoreCase)); }
public void ConvertKeywordsToSearchTerms_ReturnsDelimitedKeywords_GivenMultipleSpaceSeparatedKeywords() { var keywords = "online title search"; var result = GoogleStringUtilities.ConvertKeywordsToSearchTerms(keywords); Assert.IsTrue(string.Equals(result, "online+title+search", StringComparison.InvariantCultureIgnoreCase)); }
private IEnumerable <int> FindInfoTrackUrlInSearchResultPages(IList <HttpWebResponse> responses) { if (!responses.Any()) { return(Enumerable.Empty <int>()); } var results = new List <int>(); for (var pageIndex = 0; pageIndex < responses.Count(); pageIndex++) { var response = responses[pageIndex]; var reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII); string searchResult = reader.ReadToEnd(); var infoTrackSearchResultNumbers = GoogleStringUtilities.FindLocationOfInfoTrackInResults(searchResult, pageIndex * pageSize); results.AddRange(infoTrackSearchResultNumbers); pageIndex++; } return(results); }
public void ConvertKeywordsToSearchTerms_ThrowsReadableException_GivenNoKeywords(string keywords) { var result = GoogleStringUtilities.ConvertKeywordsToSearchTerms(keywords); }