Module: Lita::Handlers::RubyGemsWebhooks::Registrar
- Defined in:
- lib/lita/handlers/rubygems_webhooks/registrar.rb
Class Attribute Summary collapse
-
.registrar_config ⇒ Object
Returns the value of attribute registrar_config.
Class Method Summary collapse
- .clear_config ⇒ Object
- .configure {|self.registrar_config| ... } ⇒ Object
- .configure_web_hooks ⇒ Object
- .deregister_hook(gem_name, domain) ⇒ Object
- .deregister_hooks(gem_names, domain) ⇒ Object
-
.filter_webhooks(hooks, domain, registered: true) ⇒ Object
Example output { “rails”: [ { “failure_count”: 0, “url”: “3195fa79.ngrok.io/payload” }, { “failure_count”: 0, “url”: “google.com/payload” } ] }.
- .register_hook(gem_name, domain) ⇒ Object
- .register_hooks(gem_names, domain) ⇒ Object
- .web_hooks ⇒ Object
- .webhook_url(domain) ⇒ Object
Class Attribute Details
.registrar_config ⇒ Object
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_config ⇒ Object
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
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_hooks ⇒ Object
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_hooks ⇒ Object
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 |