private static void DisplayResults(SerpRank rank, string query) { if (rank == null) { Console.Write(string.Format("No results found in Top {0} results.", GoogleSearchAPI.MAX_NUMBER_RESULTS_TO_CHECK)); return; } string output = string.Format("Searcn term: {0}\nHighest rank: {1}\nSite URL: {2}", query, rank.HighestRankNumber, rank.SiteUrl); Console.WriteLine(output); }
public static async Task <SerpRank> GetRank(string query) { if (String.IsNullOrEmpty(query) || _rankNumber > MAX_NUMBER_RESULTS_TO_CHECK) { return(null); } SerpRank rank = null; try { using (_client) { Debug.Write("Callout made!!!!!!"); string requestUrl = string.Format("{0}key={1}&cx={2}&q={3}&start={4}", _apiUrl, _apiKey, _searchEngineId, Uri.EscapeDataString(query), _rankNumber.ToString()); HttpResponseMessage response = await _client.GetAsync(requestUrl); if (response.IsSuccessStatusCode) { string result = await response.Content.ReadAsStringAsync(); RootObject rootResult = JsonConvert.DeserializeObject <RootObject>(result); rank = FindHighestRank(rootResult); if (rank == null || rank.HighestRankNumber == 0) { await GetRank(query); } } } } catch (Exception e) { Debug.Write(e.Message); } return(rank); }
private static SerpRank FindHighestRank(RootObject rootResult) { if (rootResult == null || rootResult.items == null || rootResult.items.Count == 0) { return(null); } SerpRank highestRank = null; bool matchFound = false; int resultIndex = 0; try { do { Item item = rootResult.items[resultIndex]; if (item.link.ToLower().Contains(_siteUrl) || item.displayLink.ToLower().Contains(_siteUrl)) { highestRank = new SerpRank(); highestRank.HighestRankNumber = _rankNumber; highestRank.SiteUrl = item.link; matchFound = true; } else { resultIndex++; _rankNumber++; } } while (!matchFound && resultIndex < rootResult.items.Count); } catch (Exception e) { Debug.Write(e.Message); } return(highestRank); }