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; } /// /// Gets the list of hooks defined for a organization /// /// The organizations name /// See API documentation for more information. public IObservable GetAll(string org) { Ensure.ArgumentNotNullOrEmptyString(org, nameof(org)); return _connection.GetAndFlattenAllPages(ApiUrls.OrganizationHooks(org)); } /// /// Gets the list of hooks defined for a organization /// /// The organizations name /// Options for changing the API response /// See API documentation for more information. public IObservable GetAll(string org, ApiOptions options) { Ensure.ArgumentNotNullOrEmptyString(org, nameof(org)); Ensure.ArgumentNotNull(options, nameof(options)); return _connection.GetAndFlattenAllPages(ApiUrls.OrganizationHooks(org), options); } /// /// Gets a single hook defined for a organization by id /// /// The organizations name /// The organizations hook id /// See API documentation for more information. public IObservable Get(string org, int hookId) { Ensure.ArgumentNotNullOrEmptyString(org, nameof(org)); return _client.Get(org, hookId).ToObservable(); } /// /// Creates a hook for a organization /// /// The organizations name /// The hook's parameters /// See API documentation for more information. public IObservable Create(string org, NewOrganizationHook hook) { Ensure.ArgumentNotNullOrEmptyString(org, nameof(org)); Ensure.ArgumentNotNull(hook, nameof(hook)); return _client.Create(org, hook).ToObservable(); } /// /// Edits a hook for a organization /// /// The organizations name /// The organizations hook id /// The hook's parameters /// See API documentation for more information. /// public IObservable Edit(string org, int hookId, EditOrganizationHook hook) { Ensure.ArgumentNotNullOrEmptyString(org, nameof(org)); Ensure.ArgumentNotNull(hook, nameof(hook)); return _client.Edit(org, hookId, hook).ToObservable(); } /// /// This will trigger a ping event to be sent to the hook. /// /// The organizations name /// The organizations hook id /// See API documentation for more information. public IObservable Ping(string org, int hookId) { Ensure.ArgumentNotNullOrEmptyString(org, nameof(org)); return _client.Ping(org, hookId).ToObservable(); } /// /// Deletes a hook for a organization /// /// The organizations name /// The organizations hook id /// See API documentation for more information. public IObservable Delete(string org, int hookId) { Ensure.ArgumentNotNullOrEmptyString(org, nameof(org)); return _client.Delete(org, hookId).ToObservable(); } } }