public void GetContribCommits(Repo rep, string proot) { //** Avoid certificate error ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //** Format URL string string input = "https://api.github.com/repos/" + proot + "/" + rep.RepoName + "/stats/contributors" + "?access_token=" + GthAuth; WebClient currClient = new WebClient(); List <ContribCommit> lstContrib = new List <ContribCommit>(); currClient.Headers.Add("user-agent", "karloskolley"); string jsonInput = ""; Uri urUrl = new Uri(input); Thread.Sleep(100); try { jsonInput = currClient.DownloadString(urUrl); Thread.Sleep(1000); } catch (Exception ex) { ContribCommit.SetErr300(rep, lstContrib, ex.Message, input); currClient.Dispose(); currClient = null; GC.Collect(); Thread.Sleep(1000); return; } if (jsonInput.Equals(string.Empty)) { ContribCommit.SetErrNoData400(rep, lstContrib, input); currClient.Dispose(); currClient = null; GC.Collect(); Thread.Sleep(1000); return; } Thread.Sleep(100); if (jsonInput.Equals("{}")) { ContribCommit.SetErrNoData500(rep, lstContrib, input); currClient.Dispose(); currClient = null; GC.Collect(); Thread.Sleep(1000); return; } JArray ContribList = null; int Cnt = 0; try { ContribList = JArray.Parse(jsonInput); Thread.Sleep(100); } catch (Exception ex) { ContribCommit.SetErrArray600(rep, lstContrib, ex.Message, input); currClient.Dispose(); currClient = null; GC.Collect(); Thread.Sleep(1000); return; } List <ContribCommit> lstContribLogin = null; for (Cnt = 0; Cnt < ContribList.Count; Cnt++) { lstContribLogin = GetCommits(ContribList, input, Cnt); if (lstContribLogin.Count == 0) { continue; } for (int i = 0; i < lstContribLogin.Count; i++) { lstContrib.Add(lstContribLogin[i]); } } currClient.Dispose(); currClient = null; GC.Collect(); GC.Collect(); Thread.Sleep(100); rep.Contribs = lstContrib; }