From 189a8e1da87bfbbd145b4c0cf9a50de4e44b88ac Mon Sep 17 00:00:00 2001 From: Haacked Date: Wed, 16 Oct 2013 16:55:52 -0700 Subject: [PATCH] Flatten the observables for users --- Octokit.Reactive/Clients/ObservableUsersClient.cs | 11 +++++++---- Octokit.Reactive/IObservableUsersClient.cs | 2 +- Octokit.Tests/Clients/UsersClientTests.cs | 1 - Octokit/Clients/UsersClient.cs | 9 ++++----- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Octokit.Reactive/Clients/ObservableUsersClient.cs b/Octokit.Reactive/Clients/ObservableUsersClient.cs index 700fdbb1..b151f1f2 100644 --- a/Octokit.Reactive/Clients/ObservableUsersClient.cs +++ b/Octokit.Reactive/Clients/ObservableUsersClient.cs @@ -1,17 +1,20 @@ using System; using System.Reactive.Threading.Tasks; +using Octokit.Reactive.Helpers; namespace Octokit.Reactive.Clients { public class ObservableUsersClient : IObservableUsersClient { readonly IUsersClient _client; + readonly IConnection _connection; - public ObservableUsersClient(IUsersClient client) + public ObservableUsersClient(IGitHubClient client) { Ensure.ArgumentNotNull(client, "client"); - _client = client; + _client = client.User; + _connection = client.Connection; } public IObservable Get(string login) @@ -33,9 +36,9 @@ namespace Octokit.Reactive.Clients return _client.Update(user).ToObservable(); } - public IObservable> GetEmails() + public IObservable GetEmails() { - return _client.GetEmails().ToObservable(); + return _connection.GetAndFlattenAllPages(ApiUrls.Emails()); } } } diff --git a/Octokit.Reactive/IObservableUsersClient.cs b/Octokit.Reactive/IObservableUsersClient.cs index 96d56799..a671df61 100644 --- a/Octokit.Reactive/IObservableUsersClient.cs +++ b/Octokit.Reactive/IObservableUsersClient.cs @@ -33,6 +33,6 @@ namespace Octokit.Reactive /// /// [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] - IObservable> GetEmails(); + IObservable GetEmails(); } } diff --git a/Octokit.Tests/Clients/UsersClientTests.cs b/Octokit.Tests/Clients/UsersClientTests.cs index d5173025..97572d60 100644 --- a/Octokit.Tests/Clients/UsersClientTests.cs +++ b/Octokit.Tests/Clients/UsersClientTests.cs @@ -4,7 +4,6 @@ using System.Collections.ObjectModel; #endif using System.Threading.Tasks; using NSubstitute; -using Octokit.Internal; using Octokit.Tests.Helpers; using Xunit; diff --git a/Octokit/Clients/UsersClient.cs b/Octokit/Clients/UsersClient.cs index 7e0516e5..9c1cfeb1 100644 --- a/Octokit/Clients/UsersClient.cs +++ b/Octokit/Clients/UsersClient.cs @@ -13,8 +13,7 @@ namespace Octokit /// public class UsersClient : ApiClient, IUsersClient { - static readonly Uri userEndpoint = new Uri("/user", UriKind.Relative); - static readonly Uri emailsEndpoint = new Uri("/user/emails", UriKind.Relative); + static readonly Uri _userEndpoint = new Uri("/user", UriKind.Relative); public UsersClient(IApiConnection client) : base(client) { @@ -41,7 +40,7 @@ namespace Octokit /// A public async Task Current() { - return await Client.Get(userEndpoint); + return await Client.Get(_userEndpoint); } /// @@ -54,7 +53,7 @@ namespace Octokit { Ensure.ArgumentNotNull(user, "user"); - return await Client.Patch(userEndpoint, user); + return await Client.Patch(_userEndpoint, user); } /// @@ -63,7 +62,7 @@ namespace Octokit /// public async Task> GetEmails() { - return await Client.Get>(emailsEndpoint, null); + return await Client.Get>(ApiUrls.Emails(), null); } } }