class Sniffer::Middleware::Chain

Stores all the middleware configs

Public Instance Methods

add(klass, *args) click to toggle source
# File lib/sniffer/middleware/chain.rb, line 40
def add(klass, *args)
  entries.push(Entry.new(klass, *args))
end
each(&block) click to toggle source
# File lib/sniffer/middleware/chain.rb, line 36
def each(&block)
  entries.each(&block)
end
entries() click to toggle source
# File lib/sniffer/middleware/chain.rb, line 32
def entries
  @entries ||= []
end
invoke_request(*args) { || ... } click to toggle source
# File lib/sniffer/middleware/chain.rb, line 48
def invoke_request(*args)
  chain = map(&:make_new).dup
  traverse_chain = lambda do
    if chain.empty?
      yield
    else
      chain.shift.request(*args, &traverse_chain)
    end
  end
  traverse_chain.call
end
invoke_response(*args) { || ... } click to toggle source
# File lib/sniffer/middleware/chain.rb, line 60
def invoke_response(*args)
  chain = map(&:make_new).dup
  traverse_chain = lambda do
    if chain.empty?
      yield
    else
      chain.shift.response(*args, &traverse_chain)
    end
  end
  traverse_chain.call
end
remove(klass) click to toggle source
# File lib/sniffer/middleware/chain.rb, line 44
def remove(klass)
  entries.delete_if { |entry| entry.klass == klass }
end