I just got through putting together a little wrapper around Net:Http
because I keep forgetting how to handle stuff like proxies, ssl, basic
auth and redirects with it. Thought it might be useful to others as
well. Enjoy,
-Tim Becker (tim@kuriositaet.de)
SimpleHttp - a simplified wrapper around Net::Http
SimpleHttp aims to reduce the complexity of Net::Http while providing
the most commonly used (by me) http functionality.
FEATURES / USAGE
* No fuss one line GET and POST requests:
str = SimpleHttp.get "http://www.example.com"
str = SimpleHttp.get "www.example.com"
* Can use URI or String url interchangibly
str = SimpleHttp.get URI.parse "http://www.example.com/"
* Transparent Proxy Handling. Uses the 'http_proxy' environment
variable if set, also provides a set_proxy method.
http = SimpleHttp.new "http://www.example.com"
http.set_proxy "http://proxy.example.com:8000"
http.post "query" => "example_query"
* POST sends ruby Hashes as 'application/x-www-form/urlencoded'
per default, but can send any data.
http = SimpleHttp.new "http://www.example.com/image_upload"
http.post imageData, "img/png"
* Automatically handles SSL
str = SimpleHttp.get "https://secure.example.com"
* Easy HTTP Basic Authentication
str = SimpleHttp.get URI.parse("http://usr:pwd@www.example.com")
#or
http = SimpleHttp.new "http://www.example.com"
http.basic_authentication "user", "password"
http.post "query" => "example_query"
* Access headers of the request or response
http = SimpleHttp.new "www.example.com"
http.request_header["X-Custom-Header"]="useful header"
* Automatically follows Http Redirects.
The get and post methods return a String containing the body of the
request if the request was successful (HTTP 200). In case of a
redirect, the redirect is followed and the ultimate response is
returned. Per Default, up to three redirects are followed, this
behaviour can be modified by setting follow_num_redirects.
In case of any other type of response, an exception is raised.
The default behaviour can be modified by registering handlers using
the register_response_handler method. E.g. if you'd like to retrieve
the Date header instead of the body for successful transactions:
http = SimpleHttp.new ...
http.register_response_handler(Net::HTTPSuccess) {|req,res,http|
res['date']
}
Or you'd like to print the Location and then raise an exception in
case of a redirect:
http = SimpleHttp.new ...
http.register_response_handler(Net::HTTPRedirect) {|req,res,http|
puts res['location']
raise "REDIRECT not allowed!"
}
http://simplehttp.rubyforge.org/
http://rubyforge.org/projects/simplehttp/
gem install simplehttp