Skip to content

madsimian/em-http-request

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 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

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 {
  body = ''
  on_body = lambda { |chunk| body += chunk }
  http = EventMachine::HttpRequest.new('http://www.website.com/').get :on_response => on_body

  # ...
}

About

Asynchronous HTTP Client (EventMachine + Ruby)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published