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; }
}
}