-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add support for organization web hooks (#1884)
- Loading branch information
1 parent
62c0b1f
commit 8d3e7b3
Showing
23 changed files
with
1,726 additions
and
16 deletions.
There are no files selected for viewing
65 changes: 65 additions & 0 deletions
65
Octokit.Reactive/Clients/IObservableOrganizationHooksClient.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
using System; | ||
using System.Diagnostics.CodeAnalysis; | ||
using System.Reactive; | ||
|
||
namespace Octokit.Reactive | ||
{ | ||
public interface IObservableOrganizationHooksClient | ||
{ | ||
/// <summary> | ||
/// Gets the list of hooks defined for a organization | ||
/// </summary> | ||
/// <param name="org">The organizations name</param> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/#list-hooks">API documentation</a> for more information.</remarks> | ||
IObservable<OrganizationHook> GetAll(string org); | ||
|
||
/// <summary> | ||
/// Gets the list of hooks defined for a organization | ||
/// </summary> | ||
/// <param name="org">The organizations name</param> | ||
/// <param name="options">Options for changing the API response</param> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/#list-hooks">API documentation</a> for more information.</remarks> | ||
IObservable<OrganizationHook> GetAll(string org, ApiOptions options); | ||
|
||
/// <summary> | ||
/// Gets a single hook defined for a organization by id | ||
/// </summary> | ||
/// <param name="org">The organizations name</param> | ||
/// <param name="hookId">The organizations hook id</param> | ||
/// <remarks>See <a href="https://developer.github.com/v3/orgs/hooks/#get-single-hook">API documentation</a> for more information.</remarks> | ||
[SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", MessageId = "Get", Justification = "This is ok; we're matching HTTP verbs not keyworks")] | ||
IObservable<OrganizationHook> Get(string org, int hookId); | ||
|
||
/// <summary> | ||
/// Creates a hook for a organization | ||
/// </summary> | ||
/// <remarks>See <a href="https://developer.github.com/v3/orgs/hooks/#create-a-hook">API documentation</a> for more information.</remarks> | ||
/// <returns></returns> | ||
IObservable<OrganizationHook> Create(string org, NewOrganizationHook hook); | ||
|
||
/// <summary> | ||
/// Edits a hook for a organization | ||
/// </summary> | ||
/// <param name="org">The organizations name</param> | ||
/// <param name="hookId">The organizations hook id</param> | ||
/// <param name="hook">The hook's parameters</param> | ||
/// <remarks>See <a href="https://developer.github.com/v3/orgs/hooks/#edit-a-hook">API documentation</a> for more information.</remarks> | ||
IObservable<OrganizationHook> Edit(string org, int hookId, EditOrganizationHook hook); | ||
|
||
/// <summary> | ||
/// This will trigger a ping event to be sent to the hook. | ||
/// </summary> | ||
/// <param name="org">The organizations name</param> | ||
/// <param name="hookId">The organizations hook id</param> | ||
/// <remarks>See <a href="https://developer.github.com/v3/orgs/hooks/#ping-a-hook">API documentation</a> for more information.</remarks> | ||
IObservable<Unit> Ping(string org, int hookId); | ||
|
||
/// <summary> | ||
/// Deletes a hook for a organization | ||
/// </summary> | ||
/// <param name="org">The organizations name</param> | ||
/// <param name="hookId">The organizations hook id</param> | ||
/// <remarks>See <a href="https://developer.github.com/v3/orgs/hooks/#delete-a-hook">API documentation</a> for more information.</remarks> | ||
IObservable<Unit> Delete(string org, int hookId); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
116 changes: 116 additions & 0 deletions
116
Octokit.Reactive/Clients/ObservableOrganizationHooksClient.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
using System; | ||
using System.Reactive; | ||
using System.Reactive.Threading.Tasks; | ||
using Octokit.Reactive.Internal; | ||
|
||
namespace Octokit.Reactive | ||
{ | ||
public class ObservableOrganizationHooksClient : IObservableOrganizationHooksClient | ||
{ | ||
readonly IOrganizationHooksClient _client; | ||
readonly IConnection _connection; | ||
|
||
public ObservableOrganizationHooksClient(IGitHubClient client) | ||
{ | ||
Ensure.ArgumentNotNull(client, nameof(client)); | ||
|
||
_client = client.Organization.Hook; | ||
_connection = client.Connection; | ||
} | ||
|
||
/// <summary> | ||
/// Gets the list of hooks defined for a organization | ||
/// </summary> | ||
/// <param name="org">The organizations name</param> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/#list-hooks">API documentation</a> for more information.</remarks> | ||
public IObservable<OrganizationHook> GetAll(string org) | ||
{ | ||
Ensure.ArgumentNotNullOrEmptyString(org, nameof(org)); | ||
|
||
return _connection.GetAndFlattenAllPages<OrganizationHook>(ApiUrls.OrganizationHooks(org)); | ||
} | ||
|
||
/// <summary> | ||
/// Gets the list of hooks defined for a organization | ||
/// </summary> | ||
/// <param name="org">The organizations name</param> | ||
/// <param name="options">Options for changing the API response</param> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/#list-hooks">API documentation</a> for more information.</remarks> | ||
public IObservable<OrganizationHook> GetAll(string org, ApiOptions options) | ||
{ | ||
Ensure.ArgumentNotNullOrEmptyString(org, nameof(org)); | ||
Ensure.ArgumentNotNull(options, nameof(options)); | ||
|
||
return _connection.GetAndFlattenAllPages<OrganizationHook>(ApiUrls.OrganizationHooks(org), options); | ||
} | ||
|
||
/// <summary> | ||
/// Gets a single hook defined for a organization by id | ||
/// </summary> | ||
/// <param name="org">The organizations name</param> | ||
/// <param name="hookId">The organizations hook id</param> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/#get-single-hook">API documentation</a> for more information.</remarks> | ||
public IObservable<OrganizationHook> Get(string org, int hookId) | ||
{ | ||
Ensure.ArgumentNotNullOrEmptyString(org, nameof(org)); | ||
|
||
return _client.Get(org, hookId).ToObservable(); | ||
} | ||
|
||
/// <summary> | ||
/// Creates a hook for a organization | ||
/// </summary> | ||
/// <param name="org">The organizations name</param> | ||
/// <param name="hook">The hook's parameters</param> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/#create-a-hook">API documentation</a> for more information.</remarks> | ||
public IObservable<OrganizationHook> Create(string org, NewOrganizationHook hook) | ||
{ | ||
Ensure.ArgumentNotNullOrEmptyString(org, nameof(org)); | ||
Ensure.ArgumentNotNull(hook, nameof(hook)); | ||
|
||
return _client.Create(org, hook).ToObservable(); | ||
} | ||
|
||
/// <summary> | ||
/// Edits a hook for a organization | ||
/// </summary> | ||
/// <param name="org">The organizations name</param> | ||
/// <param name="hookId">The organizations hook id</param> | ||
/// <param name="hook">The hook's parameters</param> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/#edit-a-hook">API documentation</a> for more information.</remarks> | ||
/// <returns></returns> | ||
public IObservable<OrganizationHook> Edit(string org, int hookId, EditOrganizationHook hook) | ||
{ | ||
Ensure.ArgumentNotNullOrEmptyString(org, nameof(org)); | ||
Ensure.ArgumentNotNull(hook, nameof(hook)); | ||
|
||
return _client.Edit(org, hookId, hook).ToObservable(); | ||
} | ||
|
||
/// <summary> | ||
/// This will trigger a ping event to be sent to the hook. | ||
/// </summary> | ||
/// <param name="org">The organizations name</param> | ||
/// <param name="hookId">The organizations hook id</param> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/#ping-a-hook">API documentation</a> for more information.</remarks> | ||
public IObservable<Unit> Ping(string org, int hookId) | ||
{ | ||
Ensure.ArgumentNotNullOrEmptyString(org, nameof(org)); | ||
|
||
return _client.Ping(org, hookId).ToObservable(); | ||
} | ||
|
||
/// <summary> | ||
/// Deletes a hook for a organization | ||
/// </summary> | ||
/// <param name="org">The organizations name</param> | ||
/// <param name="hookId">The organizations hook id</param> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/#delete-a-hook">API documentation</a> for more information.</remarks> | ||
public IObservable<Unit> Delete(string org, int hookId) | ||
{ | ||
Ensure.ArgumentNotNullOrEmptyString(org, nameof(org)); | ||
|
||
return _client.Delete(org, hookId).ToObservable(); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.