Sha256: edb122f150ccd29c85ec401f9dc839f8f3c44423d182fc2a45ed5b32d655f71e
Contents?: true
Size: 1.87 KB
Versions: 3
Compression:
Stored size: 1.87 KB
Contents
require "active_support/notifications" module PlaidRails module Event class << self attr_accessor :adapter, :backend, :namespace def configure(&block) raise ArgumentError, "must provide a block" unless block_given? block.arity.zero? ? instance_eval(&block) : yield(self) end alias :setup :configure def instrument(event) name = case event.webhook_code when 'INITIAL_UPDATE' "transactions.initial" when 'HISTORICAL_UPDATE' "transactions.new" when 'DEFAULT_UPDATE' "transactions.interval" when 'TRANSACTIONS_REMOVED' "transactions.removed" when 'WEBHOOK_UPDATE_ACKNOWLEDGED' "webhook.updated" else "plaid.error" end backend.instrument namespace.call(name), event if event end def subscribe(name, callable = Proc.new) backend.subscribe namespace.to_regexp(name), adapter.call(callable) end def all(callable = Proc.new) subscribe nil, callable end def listening?(name) namespaced_name = namespace.call(name) backend.notifier.listening?(namespaced_name) end end class Namespace < Struct.new(:value, :delimiter) def call(name = nil) "#{value}#{delimiter}#{name}" end def to_regexp(name = nil) %r{^#{Regexp.escape call(name)}} end end class NotificationAdapter < Struct.new(:subscriber) def self.call(callable) new(callable) end def call(*args) payload = args.last subscriber.call(payload) end end class Error < StandardError; end class UnauthorizedError < Error; end self.adapter = NotificationAdapter self.backend = ActiveSupport::Notifications self.namespace = Namespace.new("plaid_rails", ".") end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
plaid_rails-0.13.0 | lib/plaid_rails/event.rb |
plaid_rails-0.12.0 | lib/plaid_rails/event.rb |
plaid_rails-0.11.0 | lib/plaid_rails/event.rb |