<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/restclient.rb</filename>
    </added>
    <added>
      <filename>lib/restclient/exceptions.rb</filename>
    </added>
    <added>
      <filename>lib/restclient/request.rb</filename>
    </added>
    <added>
      <filename>lib/restclient/resource.rb</filename>
    </added>
    <added>
      <filename>lib/restclient/response.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,7 +1,7 @@
 #!/usr/bin/env ruby
 
 $:.unshift File.dirname(__FILE__) + &quot;/../lib&quot;
-require 'rest_client'
+require 'restclient'
 
 require &quot;yaml&quot;
 </diff>
      <filename>bin/restclient</filename>
    </modified>
    <modified>
      <diff>@@ -1,283 +1,2 @@
-require 'uri'
-require 'net/https'
-require 'zlib'
-require 'stringio'
-
-require File.dirname(__FILE__) + '/resource'
-require File.dirname(__FILE__) + '/request_errors'
-
-# This module's static methods are the entry point for using the REST client.
-#
-#   # GET
-#   xml = RestClient.get 'http://example.com/resource'
-#   jpg = RestClient.get 'http://example.com/resource', :accept =&gt; 'image/jpg'
-#
-#   # authentication and SSL
-#   RestClient.get 'https://user:password@example.com/private/resource'
-#
-#   # POST or PUT with a hash sends parameters as a urlencoded form body
-#   RestClient.post 'http://example.com/resource', :param1 =&gt; 'one'
-#
-#   # nest hash parameters
-#   RestClient.post 'http://example.com/resource', :nested =&gt; { :param1 =&gt; 'one' }
-#
-#   # POST and PUT with raw payloads
-#   RestClient.post 'http://example.com/resource', 'the post body', :content_type =&gt; 'text/plain'
-#   RestClient.post 'http://example.com/resource.xml', xml_doc
-#   RestClient.put 'http://example.com/resource.pdf', File.read('my.pdf'), :content_type =&gt; 'application/pdf'
-#
-#   # DELETE
-#   RestClient.delete 'http://example.com/resource'
-#
-# To use with a proxy, just set RestClient.proxy to the proper http proxy:
-#
-#   RestClient.proxy = &quot;http://proxy.example.com/&quot;
-#
-# Or inherit the proxy from the environment:
-#
-#   RestClient.proxy = ENV['http_proxy']
-#
-# For live tests of RestClient, try using http://rest-test.heroku.com, which echoes back information about the rest call:
-#
-#   &gt;&gt; RestClient.put 'http://rest-test.heroku.com/resource', :foo =&gt; 'baz'
-#   =&gt; &quot;PUT http://rest-test.heroku.com/resource with a 7 byte payload, content type application/x-www-form-urlencoded {\&quot;foo\&quot;=&gt;\&quot;baz\&quot;}&quot;
-#
-module RestClient
-	def self.get(url, headers={})
-		Request.execute(:method =&gt; :get,
-			:url =&gt; url,
-			:headers =&gt; headers)
-	end
-
-	def self.post(url, payload, headers={})
-		Request.execute(:method =&gt; :post,
-			:url =&gt; url,
-			:payload =&gt; payload,
-			:headers =&gt; headers)
-	end
-
-	def self.put(url, payload, headers={})
-		Request.execute(:method =&gt; :put,
-			:url =&gt; url,
-			:payload =&gt; payload,
-			:headers =&gt; headers)
-	end
-
-	def self.delete(url, headers={})
-		Request.execute(:method =&gt; :delete,
-			:url =&gt; url,
-			:headers =&gt; headers)
-	end
-
-	class &lt;&lt;self
-		attr_accessor :proxy
-	end
-
-	# Print log of RestClient calls.  Value can be stdout, stderr, or a filename.
-	# You can also configure logging by the environment variable RESTCLIENT_LOG.
-	def self.log=(log)
-		@@log = log
-	end
-
-	def self.log    # :nodoc:
-		return ENV['RESTCLIENT_LOG'] if ENV['RESTCLIENT_LOG']
-		return @@log if defined? @@log
-		nil
-	end
-
-	# Internal class used to build and execute the request.
-	class Request
-		attr_reader :method, :url, :payload, :headers, :user, :password, :timeout
-
-		def self.execute(args)
-			new(args).execute
-		end
-
-		def initialize(args)
-			@method = args[:method] or raise ArgumentError, &quot;must pass :method&quot;
-			@url = args[:url] or raise ArgumentError, &quot;must pass :url&quot;
-			@headers = args[:headers] || {}
-			@payload = process_payload(args[:payload])
-			@user = args[:user]
-			@password = args[:password]
-			@timeout = args[:timeout]
-		end
-
-		def execute
-			execute_inner
-		rescue Redirect =&gt; e
-			@url = e.url
-			execute
-		end
-
-		def execute_inner
-			uri = parse_url_with_auth(url)
-			transmit uri, net_http_request_class(method).new(uri.request_uri, make_headers(headers)), payload
-		end
-
-		def make_headers(user_headers)
-			default_headers.merge(user_headers).inject({}) do |final, (key, value)|
-				final[key.to_s.gsub(/_/, '-').capitalize] = value.to_s
-				final
-			end
-		end
-
-		def net_http_class
-			if RestClient.proxy
-				proxy_uri = URI.parse(RestClient.proxy)
-				Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port, proxy_uri.user, proxy_uri.password)
-			else
-				Net::HTTP
-			end
-		end
-
-		def net_http_request_class(method)
-			Net::HTTP.const_get(method.to_s.capitalize)
-		end
-
-		def parse_url(url)
-			url = &quot;http://#{url}&quot; unless url.match(/^http/)
-			URI.parse(url)
-		end
-
-		def parse_url_with_auth(url)
-			uri = parse_url(url)
-			@user = uri.user if uri.user
-			@password = uri.password if uri.password
-			uri
-		end
-
-		def process_payload(p=nil, parent_key=nil)
-			unless p.is_a?(Hash)
-				p
-			else
-				@headers[:content_type] ||= 'application/x-www-form-urlencoded'
-				p.keys.map do |k|
-					key = parent_key ? &quot;#{parent_key}[#{k}]&quot; : k
-					if p[k].is_a? Hash
-						process_payload(p[k], key)
-					else
-						value = URI.escape(p[k].to_s, Regexp.new(&quot;[^#{URI::PATTERN::UNRESERVED}]&quot;))
-						&quot;#{key}=#{value}&quot;
-					end
-				end.join(&quot;&amp;&quot;)
-			end
-		end
-
-		def transmit(uri, req, payload)
-			setup_credentials(req)
-
-			net = net_http_class.new(uri.host, uri.port)
-			net.use_ssl = uri.is_a?(URI::HTTPS)
-			net.verify_mode = OpenSSL::SSL::VERIFY_NONE
-
-			display_log request_log
-
-			net.start do |http|
-				http.read_timeout = @timeout if @timeout
-				res = http.request(req, payload)
-				display_log response_log(res)
-				string = process_result(res)
-				if string
-					Response.new(string, res)
-				else
-					nil
-				end
-			end
-		rescue EOFError
-			raise RestClient::ServerBrokeConnection
-		rescue Timeout::Error
-			raise RestClient::RequestTimeout
-		end
-
-		def setup_credentials(req)
-			req.basic_auth(user, password) if user
-		end
-
-		def process_result(res)
-			if %w(200 201 202).include? res.code
-				decode res['content-encoding'], res.body
-			elsif %w(301 302 303).include? res.code
-				url = res.header['Location']
-
-				if url !~ /^http/
-					uri = URI.parse(@url)
-					uri.path = &quot;/#{url}&quot;.squeeze('/')
-					url = uri.to_s
-				end
-
-				raise Redirect, url
-			elsif res.code == &quot;304&quot;
-				raise NotModified
-			elsif res.code == &quot;401&quot;
-				raise Unauthorized, res
-			elsif res.code == &quot;404&quot;
-				raise ResourceNotFound, res
-			else
-				raise RequestFailed, res
-			end
-		end
-
-		def decode(content_encoding, body)
-			if content_encoding == 'gzip'
-				Zlib::GzipReader.new(StringIO.new(body)).read
-			elsif content_encoding == 'deflate'
-				Zlib::Inflate.new.inflate(body)
-			else
-				body
-			end
-		end
-
-		def request_log
-			out = []
-			out &lt;&lt; &quot;RestClient.#{method} #{url.inspect}&quot;
-			out &lt;&lt; (payload.size &gt; 100 ? &quot;(#{payload.size} byte payload)&quot;.inspect : payload.inspect) if payload
-			out &lt;&lt; headers.inspect.gsub(/^\{/, '').gsub(/\}$/, '') unless headers.empty?
-			out.join(', ')
-		end
-
-		def response_log(res)
-			&quot;# =&gt; #{res.code} #{res.class.to_s.gsub(/^Net::HTTP/, '')} | #{(res['Content-type'] || '').gsub(/;.*$/, '')} #{(res.body) ? res.body.size : nil} bytes&quot;
-		end
-
-		def display_log(msg)
-			return unless log_to = RestClient.log
-
-			if log_to == 'stdout'
-				STDOUT.puts msg
-			elsif log_to == 'stderr'
-				STDERR.puts msg
-			else
-				File.open(log_to, 'a') { |f| f.puts msg }
-			end
-		end
-
-		def default_headers
-			{ :accept =&gt; 'application/xml', :accept_encoding =&gt; 'gzip, deflate' }
-		end
-	end
-
-	class Response &lt; String
-		attr_reader :net_http_res
-
-		def initialize(string, net_http_res)
-			@net_http_res = net_http_res
-			super string
-		end
-
-		def code
-			@code ||= @net_http_res.code.to_i
-		end
-
-		def headers
-			@headers ||= self.class.beautify_headers(@net_http_res.to_hash)
-		end
-
-		def self.beautify_headers(headers)
-			headers.inject({}) do |out, (key, value)|
-				out[key.gsub(/-/, '_').to_sym] = value.first
-				out
-			end
-		end
-	end
-end
+# This file exists for backward compatbility with require 'rest_client'
+require File.dirname(__FILE__) + '/restclient'</diff>
      <filename>lib/rest_client.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
 require 'rubygems'
 require 'spec'
 
-require File.dirname(__FILE__) + '/../lib/rest_client'
+require File.dirname(__FILE__) + '/../lib/restclient'</diff>
      <filename>spec/base.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>lib/request_errors.rb</filename>
    </removed>
    <removed>
      <filename>lib/resource.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>92a25a7a10c550403b40c0a07e70693789cba242</id>
    </parent>
  </parents>
  <author>
    <name>Adam Wiggins</name>
    <email>adam@heroku.com</email>
  </author>
  <url>http://github.com/adamwiggins/rest-client/commit/edeafb34dc864530c21de03182743fef5eb214b1</url>
  <id>edeafb34dc864530c21de03182743fef5eb214b1</id>
  <committed-date>2009-01-24T14:49:01-08:00</committed-date>
  <authored-date>2009-01-24T14:49:01-08:00</authored-date>
  <message>restclient instead of rest_client; reorganize lib dir</message>
  <tree>c753ce897e721a8e29c437da8fc2dd4cd3239d45</tree>
  <committer>
    <name>Adam Wiggins</name>
    <email>adam@heroku.com</email>
  </committer>
</commit>
