EM-HTTP-Request
Async (EventMachine) HTTP client, with support for:
- Asynchronous HTTP API for single & parallel request execution
- Keep-Alive and HTTP pipelining support
- Auto-follow 3xx redirects with max depth
- Automatic gzip & deflate decoding
- Streaming response processing
- Streaming file uploads
- HTTP proxy and SOCKS5 support
- Basic Auth & OAuth
- Connection-level & global middleware support
- HTTP parser via http_parser.rb
- Works wherever EventMachine runs: Rubinius, JRuby, MRI
Getting started
gem install em-http-request
- Introductory screencast
- Issuing GET/POST/etc requests
- Issuing parallel requests with Multi interface
- Handling Redirects & Timeouts
- Keep-Alive and HTTP Pipelining
- Stream processing responses & uploads
- Issuing requests through HTTP & SOCKS5 proxies
- Basic Auth & OAuth
- GZIP & Deflate decoding
- EM-HTTP Middleware
Extensions
Several higher-order Ruby projects have incorporated em-http and other Ruby HTTP clients:
- EM-Synchrony - Collection of convenience classes and primitives to help untangle evented code (Ruby 1.9 + Fibers).
- Rack-Client - Use Rack API for server, test, and client side. Supports Rack middleware!
- Faraday - Modular HTTP client library using middleware heavily inspired by Rack.
Testing
-
WebMock - Library for stubbing and setting expectations on HTTP requests in Ruby.
- Example of using WebMock, VCR & EM-HTTP
Other libraries & applications using EM-HTTP
- VMWare CloudFoundry - The open platform-as-a-service project
- PubSubHubbub - Asynchronous PubSubHubbub ruby client
- em-net-http - Monkeypatching Net::HTTP to play ball with EventMachine
- chirpstream - EM client for Twitters Chirpstream API
- rsolr-async - An asynchronus connection adapter for RSolr
- Firering - Eventmachine powered Campfire API
- RDaneel - Ruby crawler which respects robots.txt
- em-eventsource - EventSource client for EventMachine
- and many others.. drop me a link if you want yours included!
License
(MIT License) - Copyright (c) 2011 Ilya Grigorik