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