using System; using System.Diagnostics.CodeAnalysis; using System.Reactive.Threading.Tasks; namespace Octokit.Reactive { public class ObservableUsersClient : IObservableUsersClient { readonly IUsersClient _client; public ObservableUsersClient(IGitHubClient client) { Ensure.ArgumentNotNull(client, "client"); _client = client.User; Followers = new ObservableFollowersClient(client); Email = new ObservableUserEmailsClient(client); Keys = new ObservableUserKeysClient(client); GpgKeys = new ObservableUserGpgKeysClient(client); Administration = new ObservableUserAdministrationClient(client); } /// /// Returns the user specified by the login. /// /// The login name for the user public IObservable Get(string login) { Ensure.ArgumentNotNull(login, "login"); return _client.Get(login).ToObservable(); } /// /// Returns a for the current authenticated user. /// /// Thrown if the client is not authenticated. /// A public IObservable Current() { return _client.Current().ToObservable(); } /// /// Update the specified . /// /// The login for the user /// Thrown if the client is not authenticated. /// A public IObservable Update(UserUpdate user) { Ensure.ArgumentNotNull(user, "user"); return _client.Update(user).ToObservable(); } /// /// A client for GitHub's User Followers API /// /// /// See the Followers API documentation for more information. /// public IObservableFollowersClient Followers { get; private set; } /// /// A client for GitHub's User Emails API /// /// /// See the Emails API documentation for more information. /// public IObservableUserEmailsClient Email { get; private set; } /// /// A client for GitHub's User Keys API /// /// /// See the Keys API documentation for more information. /// public IObservableUserKeysClient Keys { get; private set; } /// /// A client for GitHub's UserUser GPG Keys API. /// /// /// See the User GPG Keys documentation for more information. /// public IObservableUserGpgKeysClient GpgKeys { get; private set; } /// /// A client for GitHub's User Administration API /// /// /// See the User Administrator API documentation for more information. /// public IObservableUserAdministrationClient Administration { get; private set; } } }