Sha256: 6a6cbe3ceb4216bbc3660847f179303c79704293fbd29bfcf6ab913c9d0459f4
Contents?: true
Size: 1.94 KB
Versions: 1
Compression:
Stored size: 1.94 KB
Contents
require "active_support/notifications" require "event_sub_events/signature_verifier" require "event_sub_events/engine" if defined?(Rails) module EventSubEvents class << self attr_accessor :adapter, :backend, :namespace, :event_filter attr_reader :signing_secrets 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) event = event_filter.call(event) backend.instrument namespace.call(event.subscription.type), event if event end def subscribe(name, callable = nil, &block) callable ||= block backend.subscribe namespace.to_regexp(name), adapter.call(callable) end def all(callable = nil, &block) callable ||= block subscribe nil, callable end def listening?(name) namespaced_name = namespace.call(name) backend.notifier.listening?(namespaced_name) end def signing_secret=(value) @signing_secrets = Array(value).compact end alias signing_secrets= signing_secret= def signing_secret self.signing_secrets && self.signing_secrets.first 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 class SignatureVerificationError < Error; end class ProcessError < Error; end self.adapter = NotificationAdapter self.backend = ActiveSupport::Notifications self.namespace = Namespace.new("event_sub", ".") self.event_filter = lambda { |event| event } end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
event_sub_events-0.1.0 | lib/event_sub_events.rb |