def request(params)
if params[:uri].is_a?(String)
params[:uri] = URI.parse(@host + params[:uri])
end
host_url = "#{params[:uri].scheme}://#{params[:uri].host}#{params[:uri].port ? ":#{params[:uri].port}" : ''}"
@connections[host_url] ||= Fog::Connection.new(host_url, @persistent, @connection_options)
headers = set_extra_headers_for(params) || set_extra_headers_for({})
options = {
:expects => (params[:expects] || 200),
:method => params[:method] || 'GET',
:path => params[:uri].path + "#{"?#{params[:uri].query}" if params[:uri].query}",
:headers => headers
}
unless params[:body].nil? || params[:body].empty?
options.merge!({:body => params[:body]})
end
response = @connections[host_url].request(options)
unless response.body.empty?
if params[:parse]
document = Fog::ToHashDocument.new
parser = Nokogiri::XML::SAX::PushParser.new(document)
parser << response.body
parser.finish
response.body = document.body
end
end
response
end