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