class RackReverseProxy::ResponseBuilder

ResponseBuilder knows target response building process

Attributes

options[R]
target_request[R]
uri[R]

Public Class Methods

new(target_request, uri, options) click to toggle source
# File lib/rack_reverse_proxy/response_builder.rb, line 4
def initialize(target_request, uri, options)
  @target_request = target_request
  @uri = uri
  @options = options
end

Public Instance Methods

fetch() click to toggle source
# File lib/rack_reverse_proxy/response_builder.rb, line 10
def fetch
  setup_response
  target_response
end

Private Instance Methods

handle_https() click to toggle source
# File lib/rack_reverse_proxy/response_builder.rb, line 32
def handle_https
  return unless https?
  target_response.use_ssl = true
end
handle_verify_mode() click to toggle source
# File lib/rack_reverse_proxy/response_builder.rb, line 41
def handle_verify_mode
  return unless verify_mode?
  target_response.verify_mode = options[:verify_mode]
end
https?() click to toggle source
# File lib/rack_reverse_proxy/response_builder.rb, line 37
def https?
  "https" == uri.scheme
end
read_timeout?() click to toggle source
# File lib/rack_reverse_proxy/response_builder.rb, line 28
def read_timeout?
  options[:timeout].to_i > 0
end
set_read_timeout() click to toggle source
# File lib/rack_reverse_proxy/response_builder.rb, line 23
def set_read_timeout
  return unless read_timeout?
  target_response.read_timeout = options[:timeout]
end
setup_response() click to toggle source
# File lib/rack_reverse_proxy/response_builder.rb, line 17
def setup_response
  set_read_timeout
  handle_https
  handle_verify_mode
end
target_response() click to toggle source
# File lib/rack_reverse_proxy/response_builder.rb, line 50
def target_response
  @_target_response ||= Rack::HttpStreamingResponse.new(
    target_request,
    uri.host,
    uri.port
  )
end
verify_mode?() click to toggle source
# File lib/rack_reverse_proxy/response_builder.rb, line 46
def verify_mode?
  options.key?(:verify_mode)
end