lib/http/client.rb in http-0.5.0.pre vs lib/http/client.rb in http-0.5.0.pre2
- old
+ new
@@ -1,5 +1,6 @@
+require 'http/options'
require 'uri'
module HTTP
# Clients make requests and receive responses
class Client
@@ -8,11 +9,11 @@
BUFFER_SIZE = 4096 # Input buffer size
attr_reader :default_options
def initialize(default_options = {})
- @default_options = Options.new(default_options)
+ @default_options = HTTP::Options.new(default_options)
end
def body(opts, headers)
if opts.body
body = opts.body
@@ -33,22 +34,22 @@
method_body = body(opts, headers)
if opts.params
uri="#{uri}?#{URI.encode_www_form(opts.params)}"
end
- request = Request.new method, uri, headers, proxy, method_body
+ request = HTTP::Request.new method, uri, headers, proxy, method_body
if opts.follow
code = 302
while code == 302 or code == 301
# if the uri isn't fully formed complete it
- if not uri.match /\./
+ if not uri.match(/\./)
uri = "#{method}://#{host}#{uri}"
end
host = URI.parse(uri).host
opts.headers["Host"] = host
method_body = body(opts, headers)
- request = Request.new method, uri, headers, proxy, method_body
+ request = HTTP::Request.new method, uri, headers, proxy, method_body
response = perform request, opts
code = response.code
uri = response.headers["Location"]
end
end
@@ -59,12 +60,12 @@
format_response method, response, opts.response
end
def perform(request, options)
- parser = Http::Response::Parser.new
- uri, proxy = request.uri, request.proxy
+ parser = HTTP::Response::Parser.new
+ uri = request.uri
socket = options[:socket_class].open(uri.host, uri.port) # TODO: proxy support
if uri.is_a?(URI::HTTPS)
if options[:ssl_context] == nil
context = OpenSSL::SSL::SSLContext.new
@@ -81,11 +82,11 @@
parser << socket.readpartial(BUFFER_SIZE) until parser.headers
rescue IOError, Errno::ECONNRESET, Errno::EPIPE => ex
raise IOError, "problem making HTTP request: #{ex}"
end
- response = Http::Response.new(parser.status_code, parser.http_version, parser.headers) do
+ response = HTTP::Response.new(parser.status_code, parser.http_version, parser.headers) do
if !parser.finished? || (@body_remaining && @body_remaining > 0)
chunk = parser.chunk || begin
parser << socket.readpartial(BUFFER_SIZE)
parser.chunk || ""
end
@@ -105,17 +106,17 @@
case option
when :auto, NilClass
if method == :head
response
else
- Http::Response::BodyDelegator.new(response, response.parse_body)
+ HTTP::Response::BodyDelegator.new(response, response.parse_body)
end
when :object
response
when :parsed_body
- Http::Response::BodyDelegator.new(response, response.parse_body)
+ HTTP::Response::BodyDelegator.new(response, response.parse_body)
when :body
- Http::Response::BodyDelegator.new(response)
+ HTTP::Response::BodyDelegator.new(response)
else raise ArgumentError, "invalid response type: #{option}"
end
end
end
end