//----------------------------------------------------------------------- // // Copyright 2010 - Present Stuart Grassie // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // //---------------------------------------------------------------------- namespace csharp_github_api { using LoggingExtensions.Logging; using Resource; using RestSharp; /// /// Access the Github.com API. /// public partial class GithubRestApiClient : ApiBase { private readonly IRestClient _innerRestClient; /// /// Default Constructor. /// /// The base URL for accessing GitHub's API. public GithubRestApiClient(string baseUrl = "https://api.github.com") { BaseUrl = baseUrl; _innerRestClient = new RestClient(BaseUrl); Log.InitializeWith(); RequestFactory = new RestRequestFactory(); } public GithubRestApiClient WithLogger() where TLogger : ILog, new() { Log.InitializeWith(); this.Log().Info("Logging enabled with {0}.", typeof(TLogger).FullName); return this; } /// /// Add authentication to the client. /// /// The to use for authentication. public GithubRestApiClient WithAuthentication(IAuthenticator authenticator) { this.Log().Info("Authentication enabled with {0}", authenticator.GetType().FullName); _innerRestClient.Authenticator = authenticator; return this; } public IRestRequestFactory RequestFactory { get; private set; } } }