class RoadForest::HTTP::ExconAdapter

Attributes

connection_defaults[R]

Public Class Methods

new(url) click to toggle source
# File lib/roadforest/http/adapters/excon.rb, line 7
def initialize(url)
  @root_url = Addressable::URI.parse(url)
  @connections = Hash.new{|h,k| h[k] = build_site_connection(k)}
  @connection_defaults = {}
end

Public Instance Methods

build_site_connection(site) click to toggle source
# File lib/roadforest/http/adapters/excon.rb, line 14
def build_site_connection(site)
  Excon.new(site.to_s, @connection_defaults)
end
do_request(request) click to toggle source
# File lib/roadforest/http/adapters/excon.rb, line 27
def do_request(request)
  uri = @root_url.join(request.url)

  connection = site_connection(uri)
  excon_response = connection.request(
    :method => request.method,
    :path => uri.path,
    :headers => {"Host" => uri.host}.merge(request.headers),
    :body => request.body
  )

  response = HTTP::Response.new
  if excon_response.body.is_a? String
    response.body_string = excon_response.body
  else
    response.body = excon_response.body
  end
  response.headers = excon_response.headers
  response.status = excon_response.status

  return response
end
reset_connections() click to toggle source
# File lib/roadforest/http/adapters/excon.rb, line 18
def reset_connections
  @connections.clear
end
site_connection(uri) click to toggle source
# File lib/roadforest/http/adapters/excon.rb, line 22
def site_connection(uri)
  uri = Addressable::URI.parse(uri)
  @connections[uri.normalized_site]
end