public async Task <List <int> > GetSiteRankings(string keywords, string url) { try { List <string> urlList = await GetUrlList(keywords); List <int> siteRanking = new List <int>(); //separate index is needed to keep track of ranks int index = 1; foreach (var urlItem in urlList) { if (urlItem.ToLower().Trim().Contains(SEOHelpers.FormatUserURL(url.ToLower().Trim()))) { siteRanking.Add(index); } index++; } return(siteRanking); } catch (Exception ex) { _logger.LogError(ex.ToString()); return(null); } }
private async Task <string> GetSearchResultBody(string keywords) { try { HttpResponseMessage response = await client.GetAsync(SeacrchURL + SEOHelpers.FormatKeywordsString(keywords)); response.EnsureSuccessStatusCode(); return(await response.Content.ReadAsStringAsync()); } catch (Exception ex) { _logger.LogError(ex.ToString()); return(null); } }
private async Task <List <string> > GetUrlList(string keywords) { try { List <string> urlList = new List <string>(); var searchResultBody = await GetSearchResultBody(keywords); foreach (var match in URLRegex.Matches(searchResultBody)) { urlList.Add(SEOHelpers.ExtractUrlFromString(match.ToString())); } return(urlList); } catch (Exception ex) { _logger.LogError(ex.ToString()); return(null); } }