示例#1
0
        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;
        }