= EM-HTTP-Client EventMachine based HTTP Request interface. Supports streaming response processing, uses Ragel HTTP parser. - Simple interface for single & parallel requests via deferred callbacks - Automatic gzip & deflate decoding - Basic-Auth support - Custom timeouts Screencast / Demo of using EM-HTTP-Request: - http://everburning.com/news/eventmachine-screencast-em-http-request/ == Getting started # install & configure gemcutter repos gem update --system gem install gemcutter gem tumble gem install em-http-request irb:0> require 'em-http' == Simple client example EventMachine.run { http = EventMachine::HttpRequest.new('http://127.0.0.1/').get :query => {'keyname' => 'value'}, :timeout => 10 http.callback { p http.response_header.status p http.response_header p http.response EventMachine.stop } } == Multi request example EventMachine.run { multi = EventMachine::MultiRequest.new # add multiple requests to the multi-handler multi.add(EventMachine::HttpRequest.new('http://www.google.com/').get) multi.add(EventMachine::HttpRequest.new('http://www.yahoo.com/').get) multi.callback { p multi.responses[:succeeded] p multi.responses[:failed] EventMachine.stop } } == Basic-Auth example EventMachine.run { http = EventMachine::HttpRequest.new('http://www.website.com/').get :head => {'authorization' => ['user', 'pass']} http.errback { failed } http.callback { p http.response_header EventMachine.stop } } == OAuth example EventMachine.run { http = EventMachine::HttpRequest.new('http://www.website.com/').get :head => {'authorization' => 'OAuth oauth_nonce=...'} http.errback { failed } http.callback { p http.response_header EventMachine.stop } } == POST example EventMachine.run { http1 = EventMachine::HttpRequest.new('http://www.website.com/').post :body => {"key1" => 1, "key2" => [2,3]} http2 = EventMachine::HttpRequest.new('http://www.website.com/').post :body => "some data" # ... } == Streaming body processing EventMachine.run { http = EventMachine::HttpRequest.new('http://www.website.com/').get http.stream { |chunk| print chunk } # ... } == Proxy example EventMachine.run { http1 = EventMachine::HttpRequest.new('http://www.website.com/').get :proxy => { :host => 'www.myproxy.com', :port => 8080, :authorization => ['username', 'password'] # authorization is optional }