using System;
using Octokit.Internal;
namespace Octokit
{
///
/// A Client for the GitHub API v3. You can read more about the api here: http://developer.github.com.
///
public class GitHubClient : IGitHubClient
{
///
/// Create a new instance of the GitHub API v3 client pointing to
/// https://api.github.com/
///
public GitHubClient(string userAgent) : this(new Connection(userAgent))
{
}
public GitHubClient(string userAgent, ICredentialStore credentialStore) : this(new Connection(userAgent, credentialStore))
{
}
public GitHubClient(string userAgent, Uri baseAddress) : this(new Connection(userAgent, baseAddress))
{
}
public GitHubClient(string userAgent, ICredentialStore credentialStore, Uri baseAddress)
: this(new Connection(userAgent, baseAddress, credentialStore))
{
}
public GitHubClient(IConnection connection)
{
Ensure.ArgumentNotNull(connection, "connection");
Connection = connection;
var apiConnection = new ApiConnection(connection);
Authorization = new AuthorizationsClient(apiConnection);
Issue = new IssuesClient(apiConnection);
Miscellaneous = new MiscellaneousClient(connection);
Notification = new NotificationsClient(apiConnection);
Organization = new OrganizationsClient(apiConnection);
Repository = new RepositoriesClient(apiConnection);
Release = new ReleasesClient(apiConnection);
User = new UsersClient(apiConnection);
SshKey = new SshKeysClient(apiConnection);
}
///
/// Convenience property for getting and setting credentials.
///
///
/// You can use this property if you only have a single hard-coded credential. Otherwise, pass in an
/// to the constructor.
/// Setting this property will change the to use
/// the default with just these credentials.
///
public Credentials Credentials
{
get { return Connection.Credentials; }
// Note this is for convenience. We probably shouldn't allow this to be mutable.
set
{
Ensure.ArgumentNotNull(value, "value");
Connection.Credentials = value;
}
}
///
/// The base address of the GitHub API. This defaults to https://api.github.com,
/// but you can change it if needed (to talk to a GitHub:Enterprise server for instance).
///
public Uri BaseAddress
{
get { return Connection.BaseAddress; }
}
///
/// Provides a client connection to make rest requests to HTTP endpoints.
///
public IConnection Connection { get; private set; }
public IAuthorizationsClient Authorization { get; private set; }
public IIssuesClient Issue { get; private set; }
public IMiscellaneousClient Miscellaneous { get; private set; }
public IOrganizationsClient Organization { get; private set; }
public IRepositoriesClient Repository { get; private set; }
public IReleasesClient Release { get; private set; }
public ISshKeysClient SshKey { get; private set; }
public IUsersClient User { get; private set; }
public INotificationsClient Notification { get; private set; }
}
}