Files
octokit.net/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseManagementConsoleClient.cs
Brendan Forster 8cd0b341dd Begin implementation of Enterprise ManagementConsole API, redux (#2010)
* Initial implementation of ManagementConsole - maintenance mode

* Add environment var support for management console password for integration tests

* Add reactive client and unit tests

* Update some xmlDoc

* I think this is a better way to setup the underlying baseUri on IConneciton, to achieve managemet console access rather than requiring a specific GitHubClient that cant call normal API's
Instead, the management client methods can check the base Url and if it contains /api/v3/ they can set their relative endpoint Uri to include a leading "/" which will cause the /api/v3/ to be removed.

* Update EnterpriseClient.cs

Fix xml comments

* Update IEnterpriseClient.cs

Fix xml comments

* Still trying to get the xmDoc perfect, thanks app veyor :)

* XmlDoc'ing my way to success

* Add specific test attribute for management console tests

* check chronic string empty/null

* Use helper's password field in test

* Tidy up maintenance mode tests by using a context/destructor to manage the initial/end state of maintenance mode

* make internal and tidy up URL concatenation

* move GHE endpoint fixup inside ApiUrls methods

* Rework request object to be the correct structure so SimpleJsonSerializer can be used to serialize it.  Remove MaintenanceDate class and just pass in the Date/string for when
Still need to use UrlFormEncoding rather than json in the POST body though...

* Create abstract base class for FormUrlEncoded parameters (similar to existing RequetParameters) and inherit from it in UpdateMaintenanceRequest

* Fix maintenance context logic - destructor should always turn maintenance OFF regardless of initial requested state

* Fix xml comment

* Fix Xml comment

* Those pesky xml comments!

* Fine, I give up!

* Fix string.Format

* fix bad rebase

* fix failing convention tests

* restore missing whitespace

* writing some docs

* some edits

* edit
2019-09-22 15:09:56 -03:00

53 lines
2.1 KiB
C#

using System;
using System.Reactive.Threading.Tasks;
namespace Octokit.Reactive
{
/// <summary>
/// A client for GitHub's Enterprise Management Console API
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise/management_console/">Enterprise Management Console API documentation</a> for more information.
/// </remarks>
public class ObservableEnterpriseManagementConsoleClient : IObservableEnterpriseManagementConsoleClient
{
readonly IEnterpriseManagementConsoleClient _client;
public ObservableEnterpriseManagementConsoleClient(IGitHubClient client)
{
Ensure.ArgumentNotNull(client, "client");
_client = client.Enterprise.ManagementConsole;
}
/// <summary>
/// Gets GitHub Enterprise Maintenance Mode Status
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/enterprise/management_console/#check-maintenance-status
/// </remarks>
/// <returns>The <see cref="MaintenanceModeResponse"/>.</returns>
public IObservable<MaintenanceModeResponse> GetMaintenanceMode(string managementConsolePassword)
{
Ensure.ArgumentNotNullOrEmptyString(managementConsolePassword, "managementConsolePassword");
return _client.GetMaintenanceMode(managementConsolePassword).ToObservable();
}
/// <summary>
/// Sets GitHub Enterprise Maintenance Mode
/// </summary>
/// <remarks>
/// https://developer.github.com/v3/enterprise/management_console/#check-maintenance-status
/// </remarks>
/// <returns>The <see cref="MaintenanceModeResponse"/>.</returns>
public IObservable<MaintenanceModeResponse> EditMaintenanceMode(UpdateMaintenanceRequest maintenance, string managementConsolePassword)
{
Ensure.ArgumentNotNull(maintenance, "maintenance");
Ensure.ArgumentNotNullOrEmptyString(managementConsolePassword, "managementConsolePassword");
return _client.EditMaintenanceMode(maintenance, managementConsolePassword).ToObservable();
}
}
}