From 05255d7236203c656f1046f5c6e06e4f5cb65b28 Mon Sep 17 00:00:00 2001 From: Haacked Date: Wed, 16 Oct 2013 16:44:52 -0700 Subject: [PATCH] Flatten the observables for organizations --- .../Clients/ObservableOrganizationsClient.cs | 17 ++++++++++------- .../IObservableOrganizationsClient.cs | 4 ++-- Octokit.Reactive/ObservableGitHubClient.cs | 2 +- .../Clients/OrganizationsClientTests.cs | 1 - Octokit/Clients/OrganizationsClient.cs | 8 ++------ 5 files changed, 15 insertions(+), 17 deletions(-) diff --git a/Octokit.Reactive/Clients/ObservableOrganizationsClient.cs b/Octokit.Reactive/Clients/ObservableOrganizationsClient.cs index 0f20b6cc..014e7e17 100644 --- a/Octokit.Reactive/Clients/ObservableOrganizationsClient.cs +++ b/Octokit.Reactive/Clients/ObservableOrganizationsClient.cs @@ -1,18 +1,21 @@ using System; -using System.Collections.Generic; using System.Reactive.Threading.Tasks; +using Octokit.Reactive.Helpers; namespace Octokit.Reactive.Clients { public class ObservableOrganizationsClient : IObservableOrganizationsClient { readonly IOrganizationsClient _client; + readonly IConnection _connection; - public ObservableOrganizationsClient(IOrganizationsClient client) + + public ObservableOrganizationsClient(IGitHubClient client) { Ensure.ArgumentNotNull(client, "client"); - _client = client; + _client = client.Organization; + _connection = client.Connection; } public IObservable Get(string org) @@ -22,16 +25,16 @@ namespace Octokit.Reactive.Clients return _client.Get(org).ToObservable(); } - public IObservable> GetAllForCurrent() + public IObservable GetAllForCurrent() { - return _client.GetAllForCurrent().ToObservable(); + return _connection.GetAndFlattenAllPages(ApiUrls.Organizations()); } - public IObservable> GetAll(string user) + public IObservable GetAll(string user) { Ensure.ArgumentNotNullOrEmptyString(user, "user"); - return _client.GetAll(user).ToObservable(); + return _connection.GetAndFlattenAllPages(ApiUrls.Organizations(user)); } } } diff --git a/Octokit.Reactive/IObservableOrganizationsClient.cs b/Octokit.Reactive/IObservableOrganizationsClient.cs index 459fbce8..8502d5eb 100644 --- a/Octokit.Reactive/IObservableOrganizationsClient.cs +++ b/Octokit.Reactive/IObservableOrganizationsClient.cs @@ -21,13 +21,13 @@ namespace Octokit.Reactive /// [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Justification = "Method makes a network request")] - IObservable> GetAllForCurrent(); + IObservable GetAllForCurrent(); /// /// Returns all the organizations for the specified user /// /// /// - IObservable> GetAll(string user); + IObservable GetAll(string user); } } diff --git a/Octokit.Reactive/ObservableGitHubClient.cs b/Octokit.Reactive/ObservableGitHubClient.cs index 94be6850..46e4a7c5 100644 --- a/Octokit.Reactive/ObservableGitHubClient.cs +++ b/Octokit.Reactive/ObservableGitHubClient.cs @@ -14,7 +14,7 @@ namespace Octokit.Reactive _gitHubClient = gitHubClient; Authorization = new ObservableAuthorizationsClient(gitHubClient.Authorization); Miscellaneous = new ObservableMiscellaneousClient(gitHubClient.Miscellaneous); - Organization = new ObservableOrganizationsClient(gitHubClient.Organization); + Organization = new ObservableOrganizationsClient(gitHubClient); Repository = new ObservableRepositoriesClient(gitHubClient); SshKey = new ObservableSshKeysClient(gitHubClient.SshKey); User = new ObservableUsersClient(gitHubClient.User); diff --git a/Octokit.Tests/Clients/OrganizationsClientTests.cs b/Octokit.Tests/Clients/OrganizationsClientTests.cs index c8844c79..b9e9ad8d 100644 --- a/Octokit.Tests/Clients/OrganizationsClientTests.cs +++ b/Octokit.Tests/Clients/OrganizationsClientTests.cs @@ -1,7 +1,6 @@ using System; using System.Threading.Tasks; using NSubstitute; -using Octokit.Internal; using Octokit.Tests.Helpers; using Xunit; diff --git a/Octokit/Clients/OrganizationsClient.cs b/Octokit/Clients/OrganizationsClient.cs index 1bbd0827..c3bfab74 100644 --- a/Octokit/Clients/OrganizationsClient.cs +++ b/Octokit/Clients/OrganizationsClient.cs @@ -22,18 +22,14 @@ namespace Octokit public async Task> GetAllForCurrent() { - var endpoint = new Uri("/user/orgs", UriKind.Relative); - - return await Client.GetAll(endpoint); + return await Client.GetAll(ApiUrls.Organizations()); } public async Task> GetAll(string user) { Ensure.ArgumentNotNullOrEmptyString(user, "user"); - var endpoint = "/users/{0}/orgs".FormatUri(user); - - return await Client.GetAll(endpoint); + return await Client.GetAll(ApiUrls.Organizations(user)); } } }