module Lita::Handlers::RubyGemsWebhooks::Registrar
Attributes
registrar_config[RW]
Public Class Methods
clear_config()
click to toggle source
# File lib/lita/handlers/rubygems_webhooks/registrar.rb, line 83 def self.clear_config self.registrar_config = {} end
configure() { |registrar_config| ... }
click to toggle source
# File lib/lita/handlers/rubygems_webhooks/registrar.rb, line 12 def self.configure self.registrar_config ||= {} yield(self.registrar_config) Gems.configure do |config| config.key = self.registrar_config['api_key'] end end
configure_web_hooks()
click to toggle source
# File lib/lita/handlers/rubygems_webhooks/registrar.rb, line 20 def self.configure_web_hooks remote_hooks = web_hooks desired_hooks = self.registrar_config['hooks'] current_hooks = filter_webhooks(remote_hooks, self.registrar_config['domain']) new_hooks = desired_hooks - current_hooks old_hooks = current_hooks - desired_hooks register_hooks(new_hooks, self.registrar_config['domain']) deregister_hooks(old_hooks, self.registrar_config['domain']) end
deregister_hook(gem_name, domain)
click to toggle source
# File lib/lita/handlers/rubygems_webhooks/registrar.rb, line 48 def self.deregister_hook(gem_name, domain) Gems.remove_web_hook(gem_name, webhook_url(domain)) end
deregister_hooks(gem_names, domain)
click to toggle source
# File lib/lita/handlers/rubygems_webhooks/registrar.rb, line 38 def self.deregister_hooks(gem_names, domain) gem_names.each do |gem_name| deregister_hook(gem_name, domain) end end
filter_webhooks(hooks, domain, registered: true)
click to toggle source
Example output {
"rails": [ { "failure_count": 0, "url": "http://3195fa79.ngrok.io/payload" }, { "failure_count": 0, "url": "http:/google.com/payload" } ]
}
# File lib/lita/handlers/rubygems_webhooks/registrar.rb, line 69 def self.filter_webhooks(hooks, domain, registered: true) hooks.select do |_, gem_hooks| if registered gem_hooks.any? { |hook| hook['url'].include?(domain) } else !gem_hooks.any? { |hook| hook['url'].include?(domain) } end end.keys.map(&:to_s) end
register_hook(gem_name, domain)
click to toggle source
# File lib/lita/handlers/rubygems_webhooks/registrar.rb, line 44 def self.register_hook(gem_name, domain) Gems.add_web_hook(gem_name, webhook_url(domain)) end
register_hooks(gem_names, domain)
click to toggle source
# File lib/lita/handlers/rubygems_webhooks/registrar.rb, line 32 def self.register_hooks(gem_names, domain) gem_names.each do |gem_name| register_hook(gem_name, domain) end end
web_hooks()
click to toggle source
# File lib/lita/handlers/rubygems_webhooks/registrar.rb, line 52 def self.web_hooks Gems.web_hooks end
webhook_url(domain)
click to toggle source
# File lib/lita/handlers/rubygems_webhooks/registrar.rb, line 79 def self.webhook_url(domain) "http://#{domain}/rubygems" end