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