class Net::HTTP::Middleware::Chain

Attributes

stack[RW]

Public Class Methods

new(&block) click to toggle source
# File lib/net/http/middleware/chain.rb, line 7
def initialize(&block)
  @stack = []
  instance_eval(&block) if block_given?
end

Public Instance Methods

call(request, body = nil, &on_finish) click to toggle source
# File lib/net/http/middleware/chain.rb, line 16
def call(request, body = nil, &on_finish)
  build_call_chain(stack.dup, on_finish).call(request, body)
end
use(middleware, *args) click to toggle source
# File lib/net/http/middleware/chain.rb, line 12
def use(middleware, *args)
  stack << [middleware, args]
end

Private Instance Methods

build_call_chain(stack, on_finish) click to toggle source
# File lib/net/http/middleware/chain.rb, line 20
        def build_call_chain(stack, on_finish)
  stack.reverse.reduce(FinalizeMiddleware.new(on_finish)) do |chain, current_middleware|
    klass, args = current_middleware
    klass.new(chain, *args)
  end
end