diff --git a/Octokit.Reactive/Clients/Enterprise/IObservableEnterpriseManagementConsoleClient.cs b/Octokit.Reactive/Clients/Enterprise/IObservableEnterpriseManagementConsoleClient.cs
index 816f850e..7daf5779 100644
--- a/Octokit.Reactive/Clients/Enterprise/IObservableEnterpriseManagementConsoleClient.cs
+++ b/Octokit.Reactive/Clients/Enterprise/IObservableEnterpriseManagementConsoleClient.cs
@@ -29,5 +29,29 @@ namespace Octokit.Reactive
///
/// The .
IObservable EditMaintenanceMode(UpdateMaintenanceRequest maintenance, string managementConsolePassword);
+
+ ///
+ /// Gets the authorized SSH keys for the GitHub Enterprise instance
+ ///
+ ///
+ /// https://developer.github.com/v3/enterprise/management_console/#retrieve-authorized-ssh-keys
+ ///
+ IObservable GetAllAuthorizedKeys(string managementConsolePassword);
+
+ ///
+ /// Adds an authorized SSH key to the GitHub Enterprise instance
+ ///
+ ///
+ /// https://developer.github.com/v3/enterprise/management_console/#add-a-new-authorized-ssh-key
+ ///
+ IObservable AddAuthorizedKey(AuthorizedKeyRequest authorizedKey, string managementConsolePassword);
+
+ ///
+ /// Removes an authorized SSH key from the GitHub Enterprise instance
+ ///
+ ///
+ /// https://developer.github.com/v3/enterprise/management_console/#remove-an-authorized-ssh-key
+ ///
+ IObservable DeleteAuthorizedKey(AuthorizedKeyRequest authorizedKey, string managementConsolePassword);
}
}
diff --git a/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseManagementConsoleClient.cs b/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseManagementConsoleClient.cs
index b887da76..40fa4bb9 100644
--- a/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseManagementConsoleClient.cs
+++ b/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseManagementConsoleClient.cs
@@ -1,5 +1,7 @@
using System;
+using System.Reactive.Linq;
using System.Reactive.Threading.Tasks;
+using Octokit.Reactive.Internal;
namespace Octokit.Reactive
{
@@ -12,12 +14,14 @@ namespace Octokit.Reactive
public class ObservableEnterpriseManagementConsoleClient : IObservableEnterpriseManagementConsoleClient
{
readonly IEnterpriseManagementConsoleClient _client;
+ readonly IConnection _connection;
public ObservableEnterpriseManagementConsoleClient(IGitHubClient client)
{
Ensure.ArgumentNotNull(client, "client");
_client = client.Enterprise.ManagementConsole;
+ _connection = client.Connection;
}
///
@@ -48,5 +52,50 @@ namespace Octokit.Reactive
return _client.EditMaintenanceMode(maintenance, managementConsolePassword).ToObservable();
}
+
+ ///
+ /// Gets the authorized SSH keys for the GitHub Enterprise instance
+ ///
+ ///
+ /// https://developer.github.com/v3/enterprise/management_console/#retrieve-authorized-ssh-keys
+ ///
+ public IObservable GetAllAuthorizedKeys(string managementConsolePassword)
+ {
+ Ensure.ArgumentNotNullOrEmptyString(managementConsolePassword, "managementConsolePassword");
+
+ return _connection.GetAndFlattenAllPages(ApiUrls.EnterpriseManagementConsoleAuthorizedKeys(managementConsolePassword, _connection.BaseAddress));
+ }
+
+ ///
+ /// Adds an authorized SSH key to the GitHub Enterprise instance
+ ///
+ ///
+ /// https://developer.github.com/v3/enterprise/management_console/#add-a-new-authorized-ssh-key
+ ///
+ public IObservable AddAuthorizedKey(AuthorizedKeyRequest authorizedKey, string managementConsolePassword)
+ {
+ Ensure.ArgumentNotNull(authorizedKey, "authorizedKey");
+ Ensure.ArgumentNotNullOrEmptyString(managementConsolePassword, "managementConsolePassword");
+
+ return _client.AddAuthorizedKey(authorizedKey, managementConsolePassword)
+ .ToObservable()
+ .SelectMany(x => x); // HACK: POST is not compatible with GetAndFlattenPages
+ }
+
+ ///
+ /// Removes an authorized SSH key from the GitHub Enterprise instance
+ ///
+ ///
+ /// https://developer.github.com/v3/enterprise/management_console/#remove-an-authorized-ssh-key
+ ///
+ public IObservable DeleteAuthorizedKey(AuthorizedKeyRequest authorizedKey, string managementConsolePassword)
+ {
+ Ensure.ArgumentNotNull(authorizedKey, "authorizedKey");
+ Ensure.ArgumentNotNullOrEmptyString(managementConsolePassword, "managementConsolePassword");
+
+ return _client.DeleteAuthorizedKey(authorizedKey, managementConsolePassword)
+ .ToObservable()
+ .SelectMany(x => x); // HACK: DELETE is not compatible with GetAndFlattenPages
+ }
}
}