Asynchronous HTTP Client (EventMachine + Ruby)
Ruby
Latest commit 6061430 Jan 9, 2017 @mexisme mexisme committed with Support for defining HTTP proxy via the $HTTP_PROXY (etc) env-var (#307)
* Add support for reading HTTP proxy information from *_PROXY env-vars
* Support clearing the *_PROXY env-vars during test runs
* Tests for when using *_PROXY env-vars
* Deal gracefully with invalid URLs in the $*_PROXY env-vars

- My spec_helper.rb before/after rules aren't clearing the *_PROXY
  env-vars correctly, so explicitly clear them before each example group.
- Because the the scheme of the test URL wasn't being updated, it was
  only using the $HTTP_PROXY / $http_proxy vars
- It seems the test server (Mongrel) isn't set-up to handle HTTPS, so
  have disabled those tests, for now.

README.md

EM-HTTP-Request

Gem Version Build Status

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

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

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