class Rack::Delegate::NetHttpRequestBuilder

Constants

CONTENT_HEADERS
IGNORED_HEADERS

Public Instance Methods

build() click to toggle source
# File lib/rack/delegate/net_http_request_builder.rb, line 16
def build
  net_http_request_class.new(url).tap do |net_http_request|
    delegate_rack_headers_to(net_http_request)
    delegate_rack_body_to(net_http_request)

    rewrite_net_http_request(net_http_request)
  end
end

Private Instance Methods

delegate_rack_body_to(net_http_request) click to toggle source
# File lib/rack/delegate/net_http_request_builder.rb, line 43
def delegate_rack_body_to(net_http_request)
  return unless net_http_request.request_body_permitted?

  begin
    net_http_request.body = rack_request.body.read
  ensure
    rack_request.body.rewind
  end
end
delegate_rack_headers_to(net_http_request) click to toggle source
# File lib/rack/delegate/net_http_request_builder.rb, line 39
def delegate_rack_headers_to(net_http_request)
  net_http_request.initialize_http_header(headers_from_rack_request(rack_request))
end
headers_from_rack_request(rack_request) click to toggle source
# File lib/rack/delegate/net_http_request_builder.rb, line 57
def headers_from_rack_request(rack_request)
  rack_request.env
    .select  { |key, _| key.start_with?('HTTP_') || CONTENT_HEADERS.include?(key) }
    .reject { |key, _| IGNORED_HEADERS.include?(key) }
    .collect { |key, value| [key.sub(/^HTTP_/, '').tr('_', '-'), value] }
end
http_method() click to toggle source
# File lib/rack/delegate/net_http_request_builder.rb, line 27
def http_method
  rack_request.request_method.capitalize
end
net_http_request_class() click to toggle source
# File lib/rack/delegate/net_http_request_builder.rb, line 31
def net_http_request_class
  Net::HTTP.const_get(http_method)
end
rewrite_net_http_request(net_http_request) click to toggle source
# File lib/rack/delegate/net_http_request_builder.rb, line 53
def rewrite_net_http_request(net_http_request)
  net_http_request_rewriter.rewrite(net_http_request)
end
url() click to toggle source
# File lib/rack/delegate/net_http_request_builder.rb, line 35
def url
  uri_rewriter.rewrite(URI(rack_request.url))
end