Module: Lita::Handlers::RubyGemsWebhooks::Registrar

Defined in:
lib/lita/handlers/rubygems_webhooks/registrar.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.registrar_configObject

Returns the value of attribute registrar_config.



9
10
11
# File 'lib/lita/handlers/rubygems_webhooks/registrar.rb', line 9

def registrar_config
  @registrar_config
end

Class Method Details

.clear_configObject



83
84
85
# File 'lib/lita/handlers/rubygems_webhooks/registrar.rb', line 83

def self.clear_config
  self.registrar_config = {}
end

.configure {|self.registrar_config| ... } ⇒ Object

Yields:



12
13
14
15
16
17
18
# 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_hooksObject



20
21
22
23
24
25
26
27
28
29
30
# 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) ⇒ Object



48
49
50
# 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) ⇒ Object



38
39
40
41
42
# 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) ⇒ Object

Example output {

"rails": [
    {
        "failure_count": 0,
        "url": "http://3195fa79.ngrok.io/payload"
    },
    {
        "failure_count": 0,
        "url": "http:/google.com/payload"
    }
]

}



69
70
71
72
73
74
75
76
77
# 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) ⇒ Object



44
45
46
# 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) ⇒ Object



32
33
34
35
36
# 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_hooksObject



52
53
54
# File 'lib/lita/handlers/rubygems_webhooks/registrar.rb', line 52

def self.web_hooks
  Gems.web_hooks
end

.webhook_url(domain) ⇒ Object



79
80
81
# File 'lib/lita/handlers/rubygems_webhooks/registrar.rb', line 79

def self.webhook_url(domain)
  "http://#{domain}/rubygems"
end