Sha256: fcd7043078ebad9a9e145d38154746eeba9b0637cc4eb831f9facff0d234f6e6

Contents?: true

Size: 694 Bytes

Versions: 11

Compression:

Stored size: 694 Bytes

Contents

# frozen_string_literal: true

module EasyPost::Hooks
  def self.subscribe(type, name, block)
    subscribers[type][name] = block

    name
  end

  def self.unsubscribe(type, name)
    subscribers[type].delete(name)
  end

  def self.unsubscribe_all(type)
    subscribers.delete(type)
  end

  def self.notify(type, context)
    subscribers[type].each_value { |subscriber| subscriber.call(context) }
  end

  def self.any_subscribers?(type)
    !subscribers[type].empty?
  end

  def self.subscribers
    @subscribers ||= Hash.new { |hash, key| hash[key] = {} }
  end

  private_class_method :subscribers
end

require_relative 'hooks/request_context'
require_relative 'hooks/response_context'

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
easypost-6.4.1 lib/easypost/hooks.rb
easypost-6.4.0 lib/easypost/hooks.rb
easypost-6.3.0 lib/easypost/hooks.rb
easypost-6.2.0 lib/easypost/hooks.rb
easypost-6.1.1 lib/easypost/hooks.rb
easypost-6.1.0 lib/easypost/hooks.rb
easypost-6.0.0 lib/easypost/hooks.rb
easypost-5.3.0 lib/easypost/hooks.rb
easypost-5.2.0 lib/easypost/hooks.rb
easypost-5.1.1 lib/easypost/hooks.rb
easypost-5.1.0 lib/easypost/hooks.rb