Class: ZapierRestHooks::Hook
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- ZapierRestHooks::Hook
- Defined in:
- app/models/zapier_rest_hooks/hook.rb
Class Method Summary collapse
-
.hooks(event_name, owner = Struct::ZapierApp.new(0)) ⇒ Object
Returns all hooks for a given event_name and owner.
-
.hooks_exist?(event_name, owner = Struct::ZapierApp.new(0)) ⇒ Boolean
Tests whether any hooks exist for a given event_name and owner.
-
.trigger(event_name, encoded_record, owner = Struct::ZapierApp.new(0)) ⇒ Object
Looks for an appropriate REST hook that matches the owner, and triggers the hook if one exists.
Class Method Details
.hooks(event_name, owner = Struct::ZapierApp.new(0)) ⇒ Object
Returns all hooks for a given event_name and owner.
28 29 30 |
# File 'app/models/zapier_rest_hooks/hook.rb', line 28 def self.hooks(event_name, owner = Struct::ZapierApp.new(0)) where(event_name: event_name, owner_class_name: owner.class.name, owner_id: owner.id) end |
.hooks_exist?(event_name, owner = Struct::ZapierApp.new(0)) ⇒ Boolean
Tests whether any hooks exist for a given event_name and owner
33 34 35 |
# File 'app/models/zapier_rest_hooks/hook.rb', line 33 def self.hooks_exist?(event_name, owner = Struct::ZapierApp.new(0)) hooks(event_name, owner).any? end |
.trigger(event_name, encoded_record, owner = Struct::ZapierApp.new(0)) ⇒ Object
Looks for an appropriate REST hook that matches the owner, and triggers the hook if one exists.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'app/models/zapier_rest_hooks/hook.rb', line 8 def self.trigger(event_name, encoded_record, owner = Struct::ZapierApp.new(0)) hooks = self.hooks(event_name, owner) return if hooks.empty? unless Rails.env.development? # Trigger each hook if there is more than one for an owner, which can happen. hooks.each do |hook| Rails.logger.info "Triggering REST hook event: #{event_name} / #{hook.inspect}" Rails.logger.info "REST hook record: #{encoded_record}" RestClient.post(hook.target_url, encoded_record) do |response| if response.code.eql? 410 Rails.logger.info "Destroying REST hook because of 410 response: #{hook.inspect}" hook.destroy end end end end end |