diff --git a/Octokit.Reactive/Clients/IObservableRepositoriesClient.cs b/Octokit.Reactive/Clients/IObservableRepositoriesClient.cs
index 9ccf2107..2b1a1bb2 100644
--- a/Octokit.Reactive/Clients/IObservableRepositoriesClient.cs
+++ b/Octokit.Reactive/Clients/IObservableRepositoriesClient.cs
@@ -347,5 +347,12 @@ namespace Octokit.Reactive
/// 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 00000000..cca0df72
--- /dev/null
+++ b/Octokit.Reactive/Clients/IObservableRepositoryPagesClient.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+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 GetBuilds(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 GetLatestBuild(string owner, string repositoryName);
+ }
+}
diff --git a/Octokit.Reactive/Clients/ObservableRepositoriesClient.cs b/Octokit.Reactive/Clients/ObservableRepositoriesClient.cs
index 0ee0fb24..39b21268 100644
--- a/Octokit.Reactive/Clients/ObservableRepositoriesClient.cs
+++ b/Octokit.Reactive/Clients/ObservableRepositoriesClient.cs
@@ -41,6 +41,7 @@ namespace Octokit.Reactive
DeployKeys = new ObservableRepositoryDeployKeysClient(client);
Content = new ObservableRepositoryContentsClient(client);
Merging = new ObservableMergingClient(client);
+ Page = new ObservableRepositoryPagesClient(client);
}
///
@@ -493,5 +494,12 @@ namespace Octokit.Reactive
/// 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 00000000..68ad0a6c
--- /dev/null
+++ b/Octokit.Reactive/Clients/ObservableRepositoryPagesClient.cs
@@ -0,0 +1,48 @@
+using Octokit.Reactive.Internal;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reactive.Threading.Tasks;
+using System.Text;
+using System.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;
+ }
+
+ public IObservable Get(string owner, string repositoryName)
+ {
+ Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
+ Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName");
+
+ return _client.Get(owner, repositoryName).ToObservable();
+ }
+
+ public IObservable GetBuilds(string owner, string repositoryName)
+ {
+ Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
+ Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName");
+
+ return _connection.GetAndFlattenAllPages(ApiUrls.RepositoryPageBuilds(owner, repositoryName));
+ }
+
+ public IObservable GetLatestBuild(string owner, string repositoryName)
+ {
+ Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
+ Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName");
+
+ return _client.GetLatestBuild(owner, repositoryName).ToObservable();
+ }
+ }
+}
diff --git a/Octokit.Reactive/Octokit.Reactive.csproj b/Octokit.Reactive/Octokit.Reactive.csproj
index d25d860a..ad06ce2c 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/Clients/RepositoryPagesClient.cs b/Octokit/Clients/RepositoryPagesClient.cs
index a8492d9f..f6065633 100644
--- a/Octokit/Clients/RepositoryPagesClient.cs
+++ b/Octokit/Clients/RepositoryPagesClient.cs
@@ -54,7 +54,7 @@ namespace Octokit
Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName");
- return ApiConnection.GetAll(ApiUrls.RepositoryBuilds(owner, repositoryName));
+ return ApiConnection.GetAll(ApiUrls.RepositoryPageBuilds(owner, repositoryName));
}
///
@@ -71,7 +71,7 @@ namespace Octokit
Ensure.ArgumentNotNullOrEmptyString(owner, "owner");
Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName");
- return ApiConnection.Get(ApiUrls.RepositoryBuildsLatest(owner, repositoryName));
+ return ApiConnection.Get(ApiUrls.RepositoryPageBuildsLatest(owner, repositoryName));
}
}
}
diff --git a/Octokit/Helpers/ApiUrls.cs b/Octokit/Helpers/ApiUrls.cs
index ee3b0d22..a1bc2dca 100644
--- a/Octokit/Helpers/ApiUrls.cs
+++ b/Octokit/Helpers/ApiUrls.cs
@@ -1560,12 +1560,12 @@ namespace Octokit
return "repos/{0}/{1}/pages".FormatUri(owner, name);
}
- public static Uri RepositoryBuilds(string owner, string name)
+ public static Uri RepositoryPageBuilds(string owner, string name)
{
return "repos/{0}/{1}/pages/builds".FormatUri(owner, name);
}
- public static Uri RepositoryBuildsLatest(string owner, string name)
+ public static Uri RepositoryPageBuildsLatest(string owner, string name)
{
return "repos/{0}/{1}/pages/builds/latest".FormatUri(owner, name);
}