diff --git a/Octokit.Reactive/Clients/IObservableRepositoriesClient.cs b/Octokit.Reactive/Clients/IObservableRepositoriesClient.cs index 9ccf2107fe..2b1a1bb234 100644 --- a/Octokit.Reactive/Clients/IObservableRepositoriesClient.cs +++ b/Octokit.Reactive/Clients/IObservableRepositoriesClient.cs @@ -347,5 +347,12 @@ public interface IObservableRepositoriesClient /// See the Repository Deploy Keys API documentation for more information. /// IObservableRepositoryDeployKeysClient DeployKeys { get; } + /// + /// A client for GitHub's Repository Pages API. + /// + /// + /// See the Repository Pages API documentation for more information. + /// + IObservableRepositoryPagesClient Page { get; } } } diff --git a/Octokit.Reactive/Clients/IObservableRepositoryPagesClient.cs b/Octokit.Reactive/Clients/IObservableRepositoryPagesClient.cs new file mode 100644 index 0000000000..d62daa706a --- /dev/null +++ b/Octokit.Reactive/Clients/IObservableRepositoryPagesClient.cs @@ -0,0 +1,40 @@ +using System; +using System.Diagnostics.CodeAnalysis; + +namespace Octokit.Reactive +{ + public interface IObservableRepositoryPagesClient + { + /// + /// Gets the page metadata for a given repository + /// + /// The owner of the repository + /// The name of the repository + /// + /// See the API documentation for more information. + /// + /// + [SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", MessageId = "Get")] + IObservable Get(string owner, string repositoryName); + /// + /// Gets all build metadata for a given repository + /// + /// The owner of the repository + /// The name of the repository + /// + /// See the API documentation for more information. + /// + /// + IObservable GetAll(string owner, string repositoryName); + /// + /// Gets the build metadata for the last build for a given repository + /// + /// The owner of the repository + /// The name of the repository + /// + /// See the API documentation for more information. + /// + /// + IObservable GetLatest(string owner, string repositoryName); + } +} diff --git a/Octokit.Reactive/Clients/ObservableRepositoriesClient.cs b/Octokit.Reactive/Clients/ObservableRepositoriesClient.cs index 0ee0fb2455..39b21268d9 100644 --- a/Octokit.Reactive/Clients/ObservableRepositoriesClient.cs +++ b/Octokit.Reactive/Clients/ObservableRepositoriesClient.cs @@ -41,6 +41,7 @@ public ObservableRepositoriesClient(IGitHubClient client) DeployKeys = new ObservableRepositoryDeployKeysClient(client); Content = new ObservableRepositoryContentsClient(client); Merging = new ObservableMergingClient(client); + Page = new ObservableRepositoryPagesClient(client); } /// @@ -493,5 +494,12 @@ public IObservable Compare(string owner, string name, string @bas /// See the Repository Deploy Keys API documentation for more information. /// public IObservableRepositoryDeployKeysClient DeployKeys { get; private set; } + /// + /// A client for GitHub's Repository Pages API. + /// + /// + /// See the Repository Pages API documentation for more information. + /// + public IObservableRepositoryPagesClient Page { get; private set; } } } diff --git a/Octokit.Reactive/Clients/ObservableRepositoryPagesClient.cs b/Octokit.Reactive/Clients/ObservableRepositoryPagesClient.cs new file mode 100644 index 0000000000..ebcd3af70f --- /dev/null +++ b/Octokit.Reactive/Clients/ObservableRepositoryPagesClient.cs @@ -0,0 +1,73 @@ +using Octokit.Reactive.Internal; +using System; +using System.Diagnostics.CodeAnalysis; +using System.Reactive.Threading.Tasks; + +namespace Octokit.Reactive +{ + public class ObservableRepositoryPagesClient : IObservableRepositoryPagesClient + { + readonly IRepositoryPagesClient _client; + readonly IConnection _connection; + + public ObservableRepositoryPagesClient(IGitHubClient client) + { + Ensure.ArgumentNotNull(client, "client"); + + _client = client.Repository.Page; + _connection = client.Connection; + } + + /// + /// Gets the page metadata for a given repository + /// + /// The owner of the repository + /// The name of the repository + /// + /// See the API documentation for more information. + /// + /// + [SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", MessageId = "Get")] + public IObservable Get(string owner, string repositoryName) + { + Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); + Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + + return _client.Get(owner, repositoryName).ToObservable(); + } + + /// + /// Gets all build metadata for a given repository + /// + /// The owner of the repository + /// The name of the repository + /// + /// See the API documentation for more information. + /// + /// + public IObservable GetAll(string owner, string repositoryName) + { + Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); + Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + + return _connection.GetAndFlattenAllPages(ApiUrls.RepositoryPageBuilds(owner, repositoryName)); + } + + /// + /// Gets the build metadata for the last build for a given repository + /// + /// The owner of the repository + /// The name of the repository + /// + /// See the API documentation for more information. + /// + /// + public IObservable GetLatest(string owner, string repositoryName) + { + Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); + Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + + return _client.GetLatest(owner, repositoryName).ToObservable(); + } + } +} diff --git a/Octokit.Reactive/Octokit.Reactive-Mono.csproj b/Octokit.Reactive/Octokit.Reactive-Mono.csproj index ceafa27403..194345c7f3 100644 --- a/Octokit.Reactive/Octokit.Reactive-Mono.csproj +++ b/Octokit.Reactive/Octokit.Reactive-Mono.csproj @@ -157,6 +157,8 @@ + + @@ -165,4 +167,4 @@ Octokit-Mono - + \ No newline at end of file diff --git a/Octokit.Reactive/Octokit.Reactive-MonoAndroid.csproj b/Octokit.Reactive/Octokit.Reactive-MonoAndroid.csproj index 3faa06a17b..1f676b026f 100644 --- a/Octokit.Reactive/Octokit.Reactive-MonoAndroid.csproj +++ b/Octokit.Reactive/Octokit.Reactive-MonoAndroid.csproj @@ -165,6 +165,8 @@ + + @@ -173,4 +175,4 @@ Octokit-MonoAndroid - + \ No newline at end of file diff --git a/Octokit.Reactive/Octokit.Reactive-Monotouch.csproj b/Octokit.Reactive/Octokit.Reactive-Monotouch.csproj index 4dbf2a612d..9fb92e213c 100644 --- a/Octokit.Reactive/Octokit.Reactive-Monotouch.csproj +++ b/Octokit.Reactive/Octokit.Reactive-Monotouch.csproj @@ -161,6 +161,8 @@ + + @@ -169,4 +171,4 @@ Octokit-Monotouch - + \ No newline at end of file diff --git a/Octokit.Reactive/Octokit.Reactive.csproj b/Octokit.Reactive/Octokit.Reactive.csproj index d25d860ae6..ad06ce2c5f 100644 --- a/Octokit.Reactive/Octokit.Reactive.csproj +++ b/Octokit.Reactive/Octokit.Reactive.csproj @@ -79,6 +79,7 @@ + @@ -102,6 +103,7 @@ + diff --git a/Octokit.Tests/Clients/RepositoryPagesClientTests.cs b/Octokit.Tests/Clients/RepositoryPagesClientTests.cs new file mode 100644 index 0000000000..e783b48ab5 --- /dev/null +++ b/Octokit.Tests/Clients/RepositoryPagesClientTests.cs @@ -0,0 +1,82 @@ +using NSubstitute; +using System; +using System.Threading.Tasks; +using Xunit; + +namespace Octokit.Tests.Clients +{ + public class RepositoryPagesClientTests + { + public class TheGetMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var connection = Substitute.For(); + var client = new RepositoryPagesClient(connection); + + client.Get("fake", "repo"); + + connection.Received().Get(Arg.Is(u => u.ToString() == "repos/fake/repo/pages"), null); + } + + [Fact] + public async Task EnsuresNonNullArguments() + { + var connection = Substitute.For(); + var client = new RepositoryPagesClient(connection); + + await Assert.ThrowsAsync(() => client.Get(null, "name")); + await Assert.ThrowsAsync(() => client.Get("owner", null)); + } + } + + public class TheGetBuildsMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var connection = Substitute.For(); + var client = new RepositoryPagesClient(connection); + + client.GetAll("fake", "repo"); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "repos/fake/repo/pages/builds")); + } + + [Fact] + public async Task EnsuresNonNullArguments() + { + var connection = Substitute.For(); + var client = new RepositoryPagesClient(connection); + + await Assert.ThrowsAsync(() => client.Get(null, "name")); + await Assert.ThrowsAsync(() => client.Get("owner", null)); + } + } + + public class TheGetLatestBuildMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var connection = Substitute.For(); + var client = new RepositoryPagesClient(connection); + + client.GetLatest("fake", "repo"); + + connection.Received().Get(Arg.Is(u => u.ToString() == "repos/fake/repo/pages/builds/latest"), null); + } + + [Fact] + public async Task EnsuresNonNullArguments() + { + var connection = Substitute.For(); + var client = new RepositoryPagesClient(connection); + + await Assert.ThrowsAsync(() => client.Get(null, "name")); + await Assert.ThrowsAsync(() => client.Get("owner", null)); + } + } + } +} diff --git a/Octokit.Tests/OctoKit.Tests-NetCore45.csproj b/Octokit.Tests/OctoKit.Tests-NetCore45.csproj index 278138adb3..c5ccda1c8c 100644 --- a/Octokit.Tests/OctoKit.Tests-NetCore45.csproj +++ b/Octokit.Tests/OctoKit.Tests-NetCore45.csproj @@ -95,6 +95,7 @@ + diff --git a/Octokit.Tests/Octokit.Tests-Portable.csproj b/Octokit.Tests/Octokit.Tests-Portable.csproj index 0651b2e513..8babf25a20 100644 --- a/Octokit.Tests/Octokit.Tests-Portable.csproj +++ b/Octokit.Tests/Octokit.Tests-Portable.csproj @@ -104,6 +104,7 @@ + diff --git a/Octokit.Tests/Octokit.Tests.csproj b/Octokit.Tests/Octokit.Tests.csproj index 5dc32016bc..57055097f4 100644 --- a/Octokit.Tests/Octokit.Tests.csproj +++ b/Octokit.Tests/Octokit.Tests.csproj @@ -93,6 +93,7 @@ + diff --git a/Octokit/Clients/IRepositoriesClient.cs b/Octokit/Clients/IRepositoriesClient.cs index 654a4231b9..d88480a6df 100644 --- a/Octokit/Clients/IRepositoriesClient.cs +++ b/Octokit/Clients/IRepositoriesClient.cs @@ -269,7 +269,7 @@ public interface IRepositoriesClient /// See the Commits API documentation for more details /// IRepositoryCommitsClient Commit { get; } - + /// /// Access GitHub's Releases API. /// @@ -384,5 +384,13 @@ public interface IRepositoriesClient /// New values to update the branch with /// The updated Task EditBranch(string owner, string name, string branch, BranchUpdate update); + + /// + /// A client for GitHub's Repository Pages API. + /// + /// + /// See the Repository Pages API documentation for more information. + /// + IRepositoryPagesClient Page { get; } } } diff --git a/Octokit/Clients/IRepositoryPagesClient.cs b/Octokit/Clients/IRepositoryPagesClient.cs new file mode 100644 index 0000000000..579b263326 --- /dev/null +++ b/Octokit/Clients/IRepositoryPagesClient.cs @@ -0,0 +1,47 @@ +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Threading.Tasks; + +namespace Octokit +{ + /// + /// A client for GitHub's Repository Pages API. + /// + /// + /// See the Repository Pages API documentation for more information. + /// + public interface IRepositoryPagesClient + { + /// + /// Gets the page metadata for a given repository + /// + /// The owner of the repository + /// The name of the repository + /// + /// See the API documentation for more information. + /// + /// + [SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", MessageId = "Get")] + Task Get(string owner, string repositoryName); + /// + /// Gets all build metadata for a given repository + /// + /// The owner of the repository + /// The name of the repository + /// + /// See the API documentation for more information. + /// + /// + Task> GetAll(string owner, string repositoryName); + /// + /// Gets the build metadata for the last build for a given repository + /// + /// The owner of the repository + /// The name of the repository + /// + /// See the API documentation for more information. + /// + /// + Task GetLatest(string owner, string repositoryName); + } +} \ No newline at end of file diff --git a/Octokit/Clients/RepositoriesClient.cs b/Octokit/Clients/RepositoriesClient.cs index 8360a97001..0c3c937995 100644 --- a/Octokit/Clients/RepositoriesClient.cs +++ b/Octokit/Clients/RepositoriesClient.cs @@ -44,6 +44,7 @@ public RepositoriesClient(IApiConnection apiConnection) : base(apiConnection) DeployKeys = new RepositoryDeployKeysClient(apiConnection); Merging = new MergingClient(apiConnection); Content = new RepositoryContentsClient(apiConnection); + Page = new RepositoryPagesClient(apiConnection); } /// @@ -577,5 +578,13 @@ public Task GetBranch(string owner, string repositoryName, string branch return ApiConnection.Get(ApiUrls.RepoBranch(owner, repositoryName, branchName), null, AcceptHeaders.ProtectedBranchesApiPreview); } + + /// + /// A client for GitHub's Repository Pages API. + /// + /// + /// See the Repository Pages API documentation for more information. + /// + public IRepositoryPagesClient Page { get; private set; } } } diff --git a/Octokit/Clients/RepositoryPagesClient.cs b/Octokit/Clients/RepositoryPagesClient.cs new file mode 100644 index 0000000000..a45cac796e --- /dev/null +++ b/Octokit/Clients/RepositoryPagesClient.cs @@ -0,0 +1,74 @@ +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Octokit +{ + /// + /// A client for GitHub's Repository Pages API. + /// + /// + /// See the Repository Pages API documentation for more information. + /// + public class RepositoryPagesClient : ApiClient, IRepositoryPagesClient + { + /// + /// Initializes a new GitHub Repository Pages API client. + /// + /// An API connection. + public RepositoryPagesClient(IApiConnection apiConnection) : base(apiConnection) + { + + } + + /// + /// Gets the page metadata for a given repository + /// + /// The owner of the repository + /// The name of the repository + /// + /// See the API documentation for more information. + /// + /// + public Task Get(string owner, string repositoryName) + { + Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); + Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + + return ApiConnection.Get(ApiUrls.RepositoryPage(owner, repositoryName)); + } + + /// + /// Gets all build metadata for a given repository + /// + /// The owner of the repository + /// The name of the repository + /// + /// See the API documentation for more information. + /// + /// + public Task> GetAll(string owner, string repositoryName) + { + Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); + Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + + return ApiConnection.GetAll(ApiUrls.RepositoryPageBuilds(owner, repositoryName)); + } + + /// + /// Gets the build metadata for the last build for a given repository + /// + /// The owner of the repository + /// The name of the repository + /// + /// See the API documentation for more information. + /// + /// + public Task GetLatest(string owner, string repositoryName) + { + Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); + Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + + return ApiConnection.Get(ApiUrls.RepositoryPageBuildsLatest(owner, repositoryName)); + } + } +} diff --git a/Octokit/Helpers/ApiUrls.cs b/Octokit/Helpers/ApiUrls.cs index f8f79d68cd..a1bc2dcab7 100644 --- a/Octokit/Helpers/ApiUrls.cs +++ b/Octokit/Helpers/ApiUrls.cs @@ -1554,5 +1554,20 @@ public static Uri RepositoryContent(string owner, string name, string path, stri { return "repos/{0}/{1}/contents/{2}?ref={3}".FormatUri(owner, name, path, reference); } + + public static Uri RepositoryPage(string owner, string name) + { + return "repos/{0}/{1}/pages".FormatUri(owner, name); + } + + public static Uri RepositoryPageBuilds(string owner, string name) + { + return "repos/{0}/{1}/pages/builds".FormatUri(owner, name); + } + + public static Uri RepositoryPageBuildsLatest(string owner, string name) + { + return "repos/{0}/{1}/pages/builds/latest".FormatUri(owner, name); + } } } diff --git a/Octokit/Models/Response/ApiError.cs b/Octokit/Models/Response/ApiError.cs index e28368b835..b6614a0f01 100644 --- a/Octokit/Models/Response/ApiError.cs +++ b/Octokit/Models/Response/ApiError.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; namespace Octokit { @@ -9,6 +11,7 @@ namespace Octokit #if !NETFX_CORE [Serializable] #endif + [DebuggerDisplay("{DebuggerDisplay,nq}")] public class ApiError { public ApiError() { } @@ -39,5 +42,13 @@ public ApiError(string message, string documentationUrl, IReadOnlyList public IReadOnlyList Errors { get; protected set; } + + internal string DebuggerDisplay + { + get + { + return string.Format(CultureInfo.InvariantCulture, "Message: {0}", Message); + } + } } } \ No newline at end of file diff --git a/Octokit/Models/Response/ApiErrorDetail.cs b/Octokit/Models/Response/ApiErrorDetail.cs index 253a7e593a..cf7142c831 100644 --- a/Octokit/Models/Response/ApiErrorDetail.cs +++ b/Octokit/Models/Response/ApiErrorDetail.cs @@ -1,10 +1,13 @@ using System; +using System.Diagnostics; +using System.Globalization; namespace Octokit { #if !NETFX_CORE [Serializable] #endif + [DebuggerDisplay("{DebuggerDisplay,nq}")] public class ApiErrorDetail { public ApiErrorDetail() { } @@ -24,5 +27,13 @@ public ApiErrorDetail(string message, string code, string field, string resource public string Field { get; protected set; } public string Resource { get; protected set; } + + internal string DebuggerDisplay + { + get + { + return string.Format(CultureInfo.InvariantCulture, "Message: {0}, Code: {1}, Field: {2}", Message, Code, Field); + } + } } } \ No newline at end of file diff --git a/Octokit/Models/Response/Page.cs b/Octokit/Models/Response/Page.cs new file mode 100644 index 0000000000..b35aa53be2 --- /dev/null +++ b/Octokit/Models/Response/Page.cs @@ -0,0 +1,71 @@ +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; +using System.Globalization; + +namespace Octokit +{ + public enum PagesBuildStatus + { + /// + /// The site has yet to be built + /// + Null, + /// + /// The build is in progress + /// + Building, + /// + /// The site has been built + /// + Built, + /// + /// An error occurred during the build + /// + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Errored")] + Errored, + } + + /// + /// Information about your GitHub Pages configuration + /// + [DebuggerDisplay("{DebuggerDisplay,nq}")] + public class Page + { + public Page() { } + + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "cname")] + public Page(string url, PagesBuildStatus status, string cname, bool custom404) + { + Url = url; + Status = status; + CName = cname; + Custom404 = custom404; + } + + /// + /// The pages's API URL. + /// + public string Url { get; protected set; } + /// + /// Build status of the pages site. + /// + public PagesBuildStatus Status { get; protected set; } + /// + /// CName of the pages site. Will be null if no CName was provided by the user. + /// + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "CName")] + public string CName { get; protected set; } + /// + /// Is a custom 404 page provided. + /// + public bool Custom404 { get; protected set; } + + internal string DebuggerDisplay + { + get + { + return string.Format(CultureInfo.InvariantCulture, "CName: {0}, Status: {1}", CName, Status.ToString()); + } + } + } +} diff --git a/Octokit/Models/Response/PagesBuild.cs b/Octokit/Models/Response/PagesBuild.cs new file mode 100644 index 0000000000..dd452b7f10 --- /dev/null +++ b/Octokit/Models/Response/PagesBuild.cs @@ -0,0 +1,62 @@ +using System; +using System.Diagnostics; +using System.Globalization; + +namespace Octokit +{ + /// + /// Metadata of a Github Pages build. + /// + [DebuggerDisplay("{DebuggerDisplay,nq}")] + public class PagesBuild + { + public PagesBuild() { } + + public PagesBuild(string url, PagesBuildStatus status, ApiError error, User pusher, Commit commit, TimeSpan duration, DateTime createdAt, DateTime updatedAt) + { + Url = url; + Status = status; + Error = error; + Pusher = pusher; + Commit = commit; + Duration = duration; + CreatedAt = createdAt; + UpdatedAt = updatedAt; + } + + /// + /// The pages's API URL. + /// + public string Url { get; protected set; } + /// + /// The status of the build. + /// + public PagesBuildStatus Status { get; protected set; } + /// + /// Error details - if there was one. + /// + public ApiError Error { get; protected set; } + /// + /// The user whose commit intiated the build. + /// + public User Pusher { get; protected set; } + /// + /// Commit SHA. + /// + public Commit Commit { get; protected set; } + /// + /// Duration of the build + /// + public TimeSpan Duration { get; protected set; } + public DateTime CreatedAt { get; protected set; } + public DateTime UpdatedAt { get; protected set; } + + internal string DebuggerDisplay + { + get + { + return string.Format(CultureInfo.InvariantCulture, "Pusher: {0}, Status: {1}, Duration: {2}", Pusher.Name, Status.ToString(), Duration.TotalMilliseconds); + } + } + } +} diff --git a/Octokit/Octokit-Mono.csproj b/Octokit/Octokit-Mono.csproj index de77f1dfcd..b76e632319 100644 --- a/Octokit/Octokit-Mono.csproj +++ b/Octokit/Octokit-Mono.csproj @@ -69,6 +69,7 @@ + @@ -85,6 +86,7 @@ + @@ -172,6 +174,8 @@ + + diff --git a/Octokit/Octokit-MonoAndroid.csproj b/Octokit/Octokit-MonoAndroid.csproj index 502e33b4d6..45e80dc009 100644 --- a/Octokit/Octokit-MonoAndroid.csproj +++ b/Octokit/Octokit-MonoAndroid.csproj @@ -421,6 +421,10 @@ + + + + diff --git a/Octokit/Octokit-Monotouch.csproj b/Octokit/Octokit-Monotouch.csproj index 2bd57a091e..e66291bf67 100644 --- a/Octokit/Octokit-Monotouch.csproj +++ b/Octokit/Octokit-Monotouch.csproj @@ -417,6 +417,10 @@ + + + + diff --git a/Octokit/Octokit-Portable.csproj b/Octokit/Octokit-Portable.csproj index 5201b8b065..6860a747e9 100644 --- a/Octokit/Octokit-Portable.csproj +++ b/Octokit/Octokit-Portable.csproj @@ -57,6 +57,7 @@ + @@ -116,6 +117,7 @@ + @@ -241,6 +243,8 @@ + + diff --git a/Octokit/Octokit-netcore45.csproj b/Octokit/Octokit-netcore45.csproj index 55722aa63b..e922b06a0a 100644 --- a/Octokit/Octokit-netcore45.csproj +++ b/Octokit/Octokit-netcore45.csproj @@ -73,6 +73,7 @@ + @@ -123,6 +124,7 @@ + @@ -270,6 +272,8 @@ + + diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj index 86b00534ff..38e4487511 100644 --- a/Octokit/Octokit.csproj +++ b/Octokit/Octokit.csproj @@ -62,6 +62,7 @@ + @@ -72,6 +73,7 @@ + @@ -133,6 +135,8 @@ + +