Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added a pre-receive environments client #1796

Merged
merged 16 commits into from
May 8, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,13 @@ public interface IObservableEnterpriseClient
/// See the <a href="https://developer.github.com/v3/enterprise/search_indexing/">Enterprise Search Indexing API documentation</a> for more information.
///</remarks>
IObservableEnterpriseSearchIndexingClient SearchIndexing { get; }

/// <summary>
/// A client for GitHub's Enterprise Pre-receive Environments API
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/">Enterprise Pre-receive Environments API documentation</a> for more information.
///</remarks>
IObservableEnterprisePreReceiveEnvironmentsClient PreReceiveEnvironment { get; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
using System;
using System.Reactive;

namespace Octokit.Reactive
{
/// <summary>
/// A client for GitHub's Enterprise Pre-receive Environments API
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/">Enterprise Pre-receive Environments API documentation</a> for more information.
///</remarks>
public interface IObservableEnterprisePreReceiveEnvironmentsClient
{
/// <summary>
/// Gets all <see cref="PreReceiveEnvironment"/>s.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#list-pre-receive-environments">API documentation</a> for more information.
/// </remarks>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<PreReceiveEnvironment> GetAll();

/// <summary>
/// Gets all <see cref="PreReceiveEnvironment"/>s.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#list-pre-receive-environments">API documentation</a> for more information.
/// </remarks>
/// <param name="options">Options for changing the API response</param>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<PreReceiveEnvironment> GetAll(ApiOptions options);

/// <summary>
/// Gets a single <see cref="PreReceiveEnvironment"/>.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#get-a-single-pre-receive-environment">API documentation</a> for more information.
/// </remarks>
/// <param name="environmentId">The id of the pre-receive environment</param>
/// <exception cref="NotFoundException">Thrown when the specified <paramref name="environmentId"/> does not exist.</exception>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<PreReceiveEnvironment> Get(long environmentId);

/// <summary>
/// Creates a new <see cref="PreReceiveEnvironment"/>.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#create-a-pre-receive-environment">API documentation</a> for more information.
/// </remarks>
/// <param name="newPreReceiveEnvironment">A description of the pre-receive environment to create</param>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<PreReceiveEnvironment> Create(NewPreReceiveEnvironment newPreReceiveEnvironment);

/// <summary>
/// Edits an existing <see cref="PreReceiveEnvironment"/>.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#edit-a-pre-receive-environment">API documentation</a> for more information.
/// </remarks>
/// <param name="environmentId">The id of the pre-receive environment</param>
/// <param name="updatePreReceiveEnvironment">A description of the pre-receive environment to edit</param>
/// <exception cref="NotFoundException">Thrown when the specified <paramref name="environmentId"/> does not exist.</exception>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<PreReceiveEnvironment> Edit(long environmentId, UpdatePreReceiveEnvironment updatePreReceiveEnvironment);

/// <summary>
/// Deletes an existing <see cref="PreReceiveEnvironment"/>.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#delete-a-pre-receive-environment">API documentation</a> for more information.
/// </remarks>
/// <param name="environmentId">The id of the pre-receive environment</param>
/// <exception cref="NotFoundException">Thrown when the specified <paramref name="environmentId"/> does not exist.</exception>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<Unit> Delete(long environmentId);

/// <summary>
/// Gets the download status for an existing <see cref="PreReceiveEnvironment"/>.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#get-a-pre-receive-environments-download-status">API documentation</a> for more information.
/// </remarks>
/// <param name="environmentId">The id of the pre-receive environment</param>
/// <exception cref="NotFoundException">Thrown when the specified <paramref name="environmentId"/> does not exist.</exception>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<PreReceiveEnvironmentDownload> DownloadStatus(long environmentId);

/// <summary>
/// Triggers a new download of the <see cref="PreReceiveEnvironment"/>'s tarball from the environment's <see cref="PreReceiveEnvironment.ImageUrl"/>.
/// When the download is finished, the newly downloaded tarball will overwrite the existing environment.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#trigger-a-pre-receive-environment-download">API documentation</a> for more information.
/// </remarks>
/// <param name="environmentId">The id of the pre-receive environment</param>
/// <exception cref="NotFoundException">Thrown when the specified <paramref name="environmentId"/> does not exist.</exception>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
IObservable<PreReceiveEnvironmentDownload> TriggerDownload(long environmentId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public ObservableEnterpriseClient(IGitHubClient client)
License = new ObservableEnterpriseLicenseClient(client);
Organization = new ObservableEnterpriseOrganizationClient(client);
SearchIndexing = new ObservableEnterpriseSearchIndexingClient(client);
PreReceiveEnvironment = new ObservableEnterprisePreReceiveEnvironmentsClient(client);
}

/// <summary>
Expand Down Expand Up @@ -58,5 +59,13 @@ public ObservableEnterpriseClient(IGitHubClient client)
/// See the <a href="https://developer.github.com/v3/enterprise/search_indexing/">Enterprise Search Indexing API documentation</a> for more information.
///</remarks>
public IObservableEnterpriseSearchIndexingClient SearchIndexing { get; private set; }

/// <summary>
/// A client for GitHub's Enterprise Pre-receive Environments API
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/">Enterprise Pre-receive Environments API documentation</a> for more information.
///</remarks>
public IObservableEnterprisePreReceiveEnvironmentsClient PreReceiveEnvironment { get; private set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
using System;
using System.Reactive;
using System.Reactive.Threading.Tasks;
using Octokit.Reactive.Internal;

namespace Octokit.Reactive
{
/// <summary>
/// A client for GitHub's Enterprise Pre-receive Environments API
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/">Enterprise Pre-receive Environments API documentation</a> for more information.
///</remarks>
public class ObservableEnterprisePreReceiveEnvironmentsClient : IObservableEnterprisePreReceiveEnvironmentsClient
{
readonly IEnterprisePreReceiveEnvironmentsClient _client;
readonly IConnection _connection;

public ObservableEnterprisePreReceiveEnvironmentsClient(IGitHubClient client)
{
Ensure.ArgumentNotNull(client, nameof(client));

_client = client.Enterprise.PreReceiveEnvironment;
_connection = client.Connection;
}

/// <summary>
/// Gets all <see cref="PreReceiveEnvironment"/>s.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#list-pre-receive-environments">API documentation</a> for more information.
/// </remarks>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
public IObservable<PreReceiveEnvironment> GetAll()
{
return GetAll(ApiOptions.None);
}

/// <summary>
/// Gets all <see cref="PreReceiveEnvironment"/>s.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#list-pre-receive-environments">API documentation</a> for more information.
/// </remarks>
/// <param name="options">Options for changing the API response</param>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
public IObservable<PreReceiveEnvironment> GetAll(ApiOptions options)
{
Ensure.ArgumentNotNull(options, nameof(options));

return _connection.GetAndFlattenAllPages<PreReceiveEnvironment>(ApiUrls.AdminPreReceiveEnvironments(), null, AcceptHeaders.PreReceiveEnvironmentsPreview, options);
}

/// <summary>
/// Gets a single <see cref="PreReceiveEnvironment"/>.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#get-a-single-pre-receive-environment">API documentation</a> for more information.
/// </remarks>
/// <param name="environmentId">The id of the pre-receive environment</param>
/// <exception cref="NotFoundException">Thrown when the specified <paramref name="environmentId"/> does not exist.</exception>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
public IObservable<PreReceiveEnvironment> Get(long environmentId)
{
return _client.Get(environmentId).ToObservable();
}

/// <summary>
/// Creates a new <see cref="PreReceiveEnvironment"/>.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#create-a-pre-receive-environment">API documentation</a> for more information.
/// </remarks>
/// <param name="newPreReceiveEnvironment">A description of the pre-receive environment to create</param>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
public IObservable<PreReceiveEnvironment> Create(NewPreReceiveEnvironment newPreReceiveEnvironment)
{
Ensure.ArgumentNotNull(newPreReceiveEnvironment, nameof(newPreReceiveEnvironment));

return _client.Create(newPreReceiveEnvironment).ToObservable();
}

/// <summary>
/// Edits an existing <see cref="PreReceiveEnvironment"/>.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#edit-a-pre-receive-environment">API documentation</a> for more information.
/// </remarks>
/// <param name="environmentId">The id of the pre-receive environment</param>
/// <param name="updatePreReceiveEnvironment">A description of the pre-receive environment to edit</param>
/// <exception cref="NotFoundException">Thrown when the specified <paramref name="environmentId"/> does not exist.</exception>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
public IObservable<PreReceiveEnvironment> Edit(long environmentId, UpdatePreReceiveEnvironment updatePreReceiveEnvironment)
{
Ensure.ArgumentNotNull(updatePreReceiveEnvironment, nameof(updatePreReceiveEnvironment));

return _client.Edit(environmentId, updatePreReceiveEnvironment).ToObservable();
}

/// <summary>
/// Deletes an existing <see cref="PreReceiveEnvironment"/>.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#delete-a-pre-receive-environment">API documentation</a> for more information.
/// </remarks>
/// <param name="environmentId">The id of the pre-receive environment</param>
/// <exception cref="NotFoundException">Thrown when the specified <paramref name="environmentId"/> does not exist.</exception>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
public IObservable<Unit> Delete(long environmentId)
{
return _client.Delete(environmentId).ToObservable();
}

/// <summary>
/// Gets the download status for an existing <see cref="PreReceiveEnvironment"/>.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#get-a-pre-receive-environments-download-status">API documentation</a> for more information.
/// </remarks>
/// <param name="environmentId">The id of the pre-receive environment</param>
/// <exception cref="NotFoundException">Thrown when the specified <paramref name="environmentId"/> does not exist.</exception>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
public IObservable<PreReceiveEnvironmentDownload> DownloadStatus(long environmentId)
{
return _client.DownloadStatus(environmentId).ToObservable();
}

/// <summary>
/// Triggers a new download of the <see cref="PreReceiveEnvironment"/>'s tarball from the environment's <see cref="PreReceiveEnvironment.ImageUrl"/>.
/// When the download is finished, the newly downloaded tarball will overwrite the existing environment.
/// </summary>
/// <remarks>
/// See the <a href="https://developer.github.com/v3/enterprise-admin/pre_receive_environments/#trigger-a-pre-receive-environment-download">API documentation</a> for more information.
/// </remarks>
/// <param name="environmentId">The id of the pre-receive environment</param>
/// <exception cref="NotFoundException">Thrown when the specified <paramref name="environmentId"/> does not exist.</exception>
/// <exception cref="ApiException">Thrown when a general API error occurs.</exception>
public IObservable<PreReceiveEnvironmentDownload> TriggerDownload(long environmentId)
{
return _client.TriggerDownload(environmentId).ToObservable();
}
}
}
Loading