Skip to content

gnip/em-http-request

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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/
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
  }
}
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
  }
}
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
  }
}
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"

  # ...
}
EventMachine.run {
  http = EventMachine::HttpRequest.new('http://www.website.com/').get
  http.stream { |chunk| print chunk }

  # ...
}

About

Asynchronous HTTP Client (EventMachine + Ruby)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published