/// <summary> /// Retrieve a list of volumes containing a search term /// </summary> /// <param name="searchTerm">Term for which to search the Volume set</param> /// <returns>List of Volumes containing the search term in their Name field</returns> public List <CVVolume> GetVolumesByName(string searchTerm) { List <CVVolume> result = new List <CVVolume>(); int offset = 0; int resultsThisIteration = 0; do { string query = $"{_comicVineAddress}volumes/?api_key={_apiKey}&format=json&filter=name:{HttpUtility.UrlEncode(searchTerm)}&offset={offset}"; VolumeSearchQuery searchQueryResult = Connection.ConnectAndRequestVolumeSearch(query); if (searchQueryResult.StatusCode != 1) { continue; } result.AddRange(searchQueryResult.Results); resultsThisIteration = searchQueryResult.NumberOfPageResults; offset += searchQueryResult.NumberOfPageResults; } while (resultsThisIteration == Integers.RESULTS_PER_PAGE); return(result); }
/// <summary> /// Connect to the ComicVine API and retrieve a list of Volume object /// </summary> /// <param name="url">URL to the Volume search within the API</param> /// <returns>VolumeSearchQuery object populated with Volumes matching a given query</returns> public static VolumeSearchQuery ConnectAndRequestVolumeSearch(string url) { VolumeSearchQuery result = new VolumeSearchQuery(); HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url); using WebResponse webResponse = httpWebRequest.GetResponse(); using StreamReader streamReader = new StreamReader(webResponse.GetResponseStream() !); return(JsonConvert.DeserializeObject <VolumeSearchQuery>(Sanitize(streamReader.ReadToEnd()))); }