private List <SearchResult> Map(BingResultModel search) { if (search?.webPages == null) { return(null); } List <SearchResult> results = new List <SearchResult>(); foreach (BingSearchResult result in search.webPages.value) { SearchResult tempResult = new SearchResult { Title = result.name, Link = result.url }; results.Add(tempResult); } return(results); }
public async virtual Task <List <SearchResult> > GetSearchResultsAsync(string query) { if (string.IsNullOrEmpty(query)) { return(null); } WebRequest wbReq = CreateRequest(query); //TODO: Need to add a logger, NLog for example try { using (var hResp = await wbReq.GetResponseAsync() as HttpWebResponse) { string strJSON; using (var reader = new StreamReader(hResp.GetResponseStream())) { strJSON = reader.ReadToEnd(); } BingResultModel result = JsonConvert.DeserializeObject <BingResultModel>(strJSON); return(await Task.Run(() => { return Map(result); })); } } catch (WebException ex) //That exception causes when API KEY was expired { await Task.Delay(10000); return(null); } catch (Exception ex) { await Task.Delay(10000); return(null); } }