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 @@
+
+