-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Org webhooks #1028 #1144
Org webhooks #1028 #1144
Changes from 6 commits
e27c2ac
eb32a88
481dcea
7fa37e1
f372061
7106944
2cbc808
948c3cd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
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> | ||
/// <remarks>See <a href="https://developer.github.com/v3/orgs/hooks/#list-hooks">API documentation</a> for more information.</remarks> | ||
/// <returns></returns> | ||
IObservable<OrganizationHook> GetAll(string org); | ||
|
||
/// <summary> | ||
/// Gets a single hook defined for a organization by id | ||
/// </summary> | ||
/// <remarks>See <a href="https://developer.github.com/v3/orgs/hooks/#get-single-hook">API documentation</a> for more information.</remarks> | ||
/// <returns></returns> | ||
[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> | ||
/// <remarks>See <a href="https://developer.github.com/v3/orgs/hooks/#edit-a-hook">API documentation</a> for more information.</remarks> | ||
/// <returns></returns> | ||
IObservable<OrganizationHook> Edit(string org, int hookId, EditOrganizationHook hook); | ||
|
||
/// <summary> | ||
/// This will trigger a ping event to be sent to the hook. | ||
/// </summary> | ||
/// <remarks>See <a href="https://developer.github.com/v3/orgs/hooks/#ping-a-hook">API documentation</a> for more information.</remarks> | ||
/// <returns></returns> | ||
IObservable<Unit> Ping(string org, int hookId); | ||
|
||
/// <summary> | ||
/// Deletes a hook for a organization | ||
/// </summary> | ||
/// <param name="org"></param> | ||
/// <param name="hookId"></param> | ||
/// <remarks>See <a href="https://developer.github.com/v3/orgs/hooks/#delete-a-hook">API documentation</a> for more information.</remarks> | ||
/// <returns></returns> | ||
IObservable<Unit> Delete(string org, int hookId); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
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, "client"); | ||
|
||
_client = client.Organization.Hooks; | ||
_connection = client.Connection; | ||
} | ||
|
||
/// <summary> | ||
/// Gets the list of hooks defined for a organization | ||
/// </summary> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/#list-hooks">API documentation</a> for more information.</remarks> | ||
/// <returns></returns> | ||
public IObservable<OrganizationHook> GetAll(string org) | ||
{ | ||
Ensure.ArgumentNotNullOrEmptyString(org, "org"); | ||
|
||
|
||
return _connection.GetAndFlattenAllPages<OrganizationHook>(ApiUrls.OrganizationHooks(org)); | ||
} | ||
|
||
/// <summary> | ||
/// Gets a single hook defined for a organization by id | ||
/// </summary> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/#get-single-hook">API documentation</a> for more information.</remarks> | ||
/// <returns></returns> | ||
public IObservable<OrganizationHook> Get(string org, int hookId) | ||
{ | ||
Ensure.ArgumentNotNullOrEmptyString(org, "org"); | ||
|
||
return _client.Get(org, hookId).ToObservable(); | ||
} | ||
|
||
/// <summary> | ||
/// Creates a hook for a organization | ||
/// </summary> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/#create-a-hook">API documentation</a> for more information.</remarks> | ||
/// <returns></returns> | ||
public IObservable<OrganizationHook> Create(string org, NewOrganizationHook hook) | ||
{ | ||
Ensure.ArgumentNotNullOrEmptyString(org, "org"); | ||
Ensure.ArgumentNotNull(hook, "hook"); | ||
|
||
return _client.Create(org, hook).ToObservable(); | ||
} | ||
|
||
/// <summary> | ||
/// Edits a hook for a organization | ||
/// </summary> | ||
/// <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, "org"); | ||
Ensure.ArgumentNotNull(hook, "hook"); | ||
|
||
return _client.Edit(org, hookId, hook).ToObservable(); | ||
} | ||
|
||
/// <summary> | ||
/// This will trigger a ping event to be sent to the hook. | ||
/// </summary> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/#ping-a-hook">API documentation</a> for more information.</remarks> | ||
/// <returns></returns> | ||
public IObservable<Unit> Ping(string org, int hookId) | ||
{ | ||
Ensure.ArgumentNotNullOrEmptyString(org, "org"); | ||
|
||
return _client.Ping(org, hookId).ToObservable(); | ||
} | ||
|
||
/// <summary> | ||
/// Deletes a hook for a organization | ||
/// </summary> | ||
/// <param name="owner"></param> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There is no corresponding parameter for this, so the Appeyor build is failing There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'll make this change! Thanks! |
||
/// <param name="org"></param> | ||
/// <param name="hookId"></param> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/#delete-a-hook">API documentation</a> for more information.</remarks> | ||
/// <returns></returns> | ||
public IObservable<Unit> Delete(string org, int hookId) | ||
{ | ||
Ensure.ArgumentNotNullOrEmptyString(org, "org"); | ||
|
||
return _client.Delete(org, hookId).ToObservable(); | ||
} | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -19,6 +19,7 @@ public ObservableOrganizationsClient(IGitHubClient client) | |
|
||
Member = new ObservableOrganizationMembersClient(client); | ||
Team = new ObservableTeamsClient(client); | ||
Hooks = new ObservableOrganizationHooksClient(client); | ||
|
||
_client = client.Organization; | ||
_connection = client.Connection; | ||
|
@@ -34,6 +35,12 @@ public ObservableOrganizationsClient(IGitHubClient client) | |
/// </summary> | ||
public IObservableTeamsClient Team { get; private set; } | ||
|
||
/// <summary> | ||
/// A client for GitHub's Organization Hooks API. | ||
/// </summary> | ||
/// <remarks>See <a href="http://developer.github.com/v3/orgs/hooks/">Hooks API documentation</a> for more information.</remarks> | ||
public IObservableOrganizationHooksClient Hooks { get; private set; } | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should be in the singular - Hook to be consistent with the other sub-client properties (will flow from a refactor of the interface but figured I'd mention it here also) |
||
|
||
/// <summary> | ||
/// Returns the specified organization. | ||
/// </summary> | ||
|
@@ -70,13 +77,14 @@ public IObservable<Organization> GetAll(string user) | |
/// <summary> | ||
/// Update the specified organization with data from <see cref="OrganizationUpdate"/>. | ||
/// </summary> | ||
/// <param name="organizationName">The name of the organization to update.</param> | ||
/// <param name="org">The name of the organization to update.</param> | ||
/// <param name="updateRequest"></param> | ||
/// <exception cref="AuthorizationException">Thrown if the client is not authenticated.</exception> | ||
/// <returns>A <see cref="Organization"/></returns> | ||
public IObservable<Organization> Update(string organizationName, OrganizationUpdate updateRequest) | ||
public IObservable<Organization> Update(string org, OrganizationUpdate updateRequest) | ||
{ | ||
return _client.Update(organizationName, updateRequest).ToObservable(); | ||
return _client.Update(org, updateRequest).ToObservable(); | ||
} | ||
|
||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be in the singular -
Hook
to be consistent with the other sub-client propertiesThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added these properties based on the iobservablerepositoriesclient, it was 'Hooks' there. I thought that is how it should be named here too. I'll change it if you want
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ryangribble is the master of consistency around here, but I believe that (in a separate PR) IObservableRepositoriesClient (and probably IRepositoriesClient) would need to be changed also
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yep, there has been a move towards ensuring all property names for clients are singular (#53 #1035 #1036 #375 #1038),
so I agree these should be
IOrganizationHooksClient Hook { get; private set; }
It also makes me realise we have quite a few other clients that still need to get resolved!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Opened #1207 to go into this a bit more
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done