private void UpdateStarsView(GitResponseMultiPage multiPageResponse) { var byForks = ((JArray)multiPageResponse.JsonResult).Children().ToList().OrderByDescending(x => Convert.ToInt32(x["stargazers_count"].ToString())) .Select(x => GetTokenValue(x["name"].ToString(), x["stargazers_count"].ToString())).ToArray(); this.resourceCache.AddOrUpdate("stars", byForks, (key, oldvalue) => byForks); }
private void UpdateUpdatedTimeView(GitResponseMultiPage multiPageResponse) { var byForks = ((JArray)multiPageResponse.JsonResult).Children().ToList().OrderByDescending(x => DateTime.Parse(x["updated_at"].ToString())) .Select(x => GetTokenValue(x["name"].ToString(), x["updated_at"].ToString())).ToArray(); this.resourceCache.AddOrUpdate("last_updated", byForks, (key, oldvalue) => byForks); }
/// <summary> /// Forwards a GET request to the underlying endpoint at the relative URI location. /// Retry and Pagination are taken care of by the handler implementation /// </summary> /// <param name="resourceUri">The resource URI relative to the Base URI</param> public async Task <GitResponse> Get(string resourcePath) { var client = GetHttpClient(); GitResponse gitResponse = null; JToken mergedJsonResult = null; JToken currentParseResult = null; List <string> etags = new List <string>(); var isPaged = false; var pageIndex = 1; do { var nextPageResourcePath = this.GetPagedResourcePath(resourcePath, pageIndex); var response = await this.SendRequest(this.throttledTill, client, nextPageResourcePath); response.EnsureSuccessStatusCode(); var responseStream = await response.Content.ReadAsStreamAsync(); string json = new StreamReader(responseStream).ReadToEnd(); currentParseResult = JToken.Parse(json); if (response.Headers.TryGetValues("ETag", out IEnumerable <string> etag) && etag != null && etag.Any()) { etags.Add(etag.ElementAt(0)); } if (mergedJsonResult == null) { mergedJsonResult = currentParseResult; if (currentParseResult.GetType() == typeof(JArray)) { // This api could potentially return paginated results isPaged = true; } } else { ((JArray)mergedJsonResult).Merge((JArray)currentParseResult); } pageIndex++; }while (this.HasNext(currentParseResult)); if (isPaged) { gitResponse = new GitResponseMultiPage { JsonResult = mergedJsonResult, PageETags = etags }; } else { gitResponse = new GitResponseSinglePage { JsonResult = mergedJsonResult, ETag = etags[0] }; } return(gitResponse); }