Ejemplo n.º 1
0
        public List <GithubApiResult <List <dynamic> > > GetNotifications()
        {
            // THIS CODE IS NOT YET USED AND NOT YET TESTED!
            string apiUrl = $"https://api.github.com/notifications";

            return(GetPagedDataFromGithubApi(apiUrl, ConditionalRequestHeader.CreateLastModified(this.Status.EventsLastModified)));
        }
Ejemplo n.º 2
0
        private GithubApiResult <T> GetDataFromGithubApi <T>(string apiUrl, ConditionalRequestHeader conditionalRequestHeader)
        {
            var output = new GithubApiResult <T>();

            using (var webClient = new ApiWebClient())
            {
                webClient.Headers.Add("Authorization", $"token {this.Configuration.AuthenticationToken}");

                if (conditionalRequestHeader != null)
                {
                    if (conditionalRequestHeader.Key == LastModifiedKey)
                    {
                        webClient.IfModifiedSince = DateTime.Parse(conditionalRequestHeader.Value);
                    }
                    else if (string.IsNullOrWhiteSpace(conditionalRequestHeader.Value) == false)
                    {
                        webClient.Headers.Add(conditionalRequestHeader.Key, conditionalRequestHeader.Value);
                    }
                }

                try
                {
                    output.Json             = webClient.DownloadString(apiUrl);
                    output.LastModifiedDate = webClient.ResponseHeaders.Get(LastModifiedKey);
                    output.Etag             = webClient.ResponseHeaders.Get("ETag");
                    output.Modified         = true;

                    foreach (string key in webClient.ResponseHeaders.Keys)
                    {
                        output.ResponseHeaders.Add(key, webClient.ResponseHeaders.Get(key));
                    }
                }
                catch (WebException webException)
                {
                    if (((HttpWebResponse)webException.Response).StatusCode == HttpStatusCode.NotModified)
                    {
                        output.Modified = false;
                        if (typeof(T).GetInterface("IEnumerable") != null)
                        {
                            output.Json = "[ ]";
                        }
                        else
                        {
                            output.Json = "{ }";
                        }
                    }
                    else
                    {
                        throw;
                    }
                }
            }

            output.Data = JsonConvert.DeserializeObject <T>(output.Json);

            return(output);
        }
Ejemplo n.º 3
0
        public List <GithubApiResult <List <dynamic> > > GetReceivedEvents()
        {
            string x = $"https://api.github.com/notifications";
            var    z = GetDataFromGithubApi <List <dynamic> >(x, null);

            string apiUrl = $"https://api.github.com/users/{this.Configuration.Username}/received_events";

            return(GetPagedDataFromGithubApi(apiUrl, ConditionalRequestHeader.CreateLastModified(this.Status.EventsLastModified)));
        }
Ejemplo n.º 4
0
        private List <GithubApiResult <List <dynamic> > > GetPagedDataFromGithubApi(string apiUrl, ConditionalRequestHeader conditionalRequestHeader)
        {
            int  pageNumber       = 1;
            var  output           = new List <GithubApiResult <List <dynamic> > >();
            bool doesPageHaveData = true;

            while (doesPageHaveData == true)
            {
                string callUrl   = $"{apiUrl}?page={pageNumber++}";
                var    apiResult = GetDataFromGithubApi <List <dynamic> >(callUrl, conditionalRequestHeader);

                if (apiResult.Data.Count > 0)
                {
                    output.Add(apiResult);
                }
                else
                {
                    doesPageHaveData = false;
                }
            }

            return(output);
        }
Ejemplo n.º 5
0
        public List <GithubApiResult <List <dynamic> > > GetUserFollowees(string username, string etag)
        {
            string apiUrl = $"https://api.github.com/users/{username}/following";

            return(GetPagedDataFromGithubApi(apiUrl, ConditionalRequestHeader.CreateEtag(etag)));
        }