Beispiel #1
0
        private async Task <IReadOnlyList <Issue> > RetrieveIssues(int page = 1)
        {
            var connection = _sessionService.GitHubClient.Connection;
            var parameters = new Dictionary <string, string>();

            parameters["page"]     = page.ToString();
            parameters["per_page"] = 50.ToString();
            AddRequestParameters(parameters);

            parameters = parameters.Where(x => x.Value != null).ToDictionary(x => x.Key, x => x.Value);
            var ret = await connection.Get <IReadOnlyList <Issue> >(RequestUri, parameters, "application/json");

            if (ret.HttpResponse.ApiInfo.Links.ContainsKey("next"))
            {
                LoadMoreCommand = ReactiveCommand.CreateAsyncTask(async _ => {
                    InternalItems.AddRange(await RetrieveIssues(page + 1));
                });
            }
            else
            {
                LoadMoreCommand = null;
            }

            return(ret.Body);
        }
Beispiel #2
0
        private async Task <IReadOnlyList <Gist> > RetrieveGists(int page = 1)
        {
            var connection = _sessionService.GitHubClient.Connection;
            var parameters = new Dictionary <string, string>();

            parameters["page"] = page.ToString();
            var ret = await connection.Get <IReadOnlyList <Gist> >(ApiUrls.PublicGists(), parameters, "application/json");

            if (ret.HttpResponse.ApiInfo.Links.ContainsKey("next"))
            {
                LoadMoreCommand = ReactiveCommand.CreateAsyncTask(async _ => {
                    InternalItems.AddRange(await RetrieveGists(page + 1));
                });
            }
            else
            {
                LoadMoreCommand = null;
            }

            return(ret.Body);
        }
Beispiel #3
0
        private async Task <IReadOnlyList <GitHubCommit> > RetrieveCommits(int page = 1)
        {
            var connection = SessionService.GitHubClient.Connection;
            var parameters = new Dictionary <string, string>();

            parameters["page"] = page.ToString();
            AddRequestParameters(parameters);
            var ret = await connection.Get <IReadOnlyList <GitHubCommit> >(RequestUri, parameters, "application/json");

            if (ret.HttpResponse.ApiInfo.Links.ContainsKey("next"))
            {
                LoadMoreCommand = ReactiveCommand.CreateAsyncTask(async _ => {
                    var loadMore = await RetrieveCommits(page + 1);
                    InternalItems.AddRange(loadMore.Select(x => new CommitItemViewModel(x, GoToCommit)));
                });
            }
            else
            {
                LoadMoreCommand = null;
            }

            return(ret.Body);
        }
        private async Task <IReadOnlyList <PullRequest> > RetrievePullRequests(int page = 1)
        {
            var connection = _sessionService.GitHubClient.Connection;
            var parameters = new Dictionary <string, string>();

            parameters["page"]     = page.ToString();
            parameters["per_page"] = 50.ToString();
            parameters["state"]    = SelectedFilter == 0 ? "open" : "closed";
            var ret = await connection.Get <IReadOnlyList <PullRequest> >(ApiUrls.PullRequests(RepositoryOwner, RepositoryName), parameters, "application/json");

            if (ret.HttpResponse.ApiInfo.Links.ContainsKey("next"))
            {
                LoadMoreCommand = ReactiveCommand.CreateAsyncTask(async _ => {
                    InternalItems.AddRange(await RetrievePullRequests(page + 1));
                });
            }
            else
            {
                LoadMoreCommand = null;
            }

            return(ret.Body);
        }