{"id":13463447,"url":"https://github.com/igrigorik/em-http-request","last_synced_at":"2025-05-13T23:07:34.296Z","repository":{"id":425059,"uuid":"45103","full_name":"igrigorik/em-http-request","owner":"igrigorik","description":"Asynchronous HTTP Client (EventMachine + Ruby)","archived":false,"fork":false,"pushed_at":"2024-11-10T05:42:53.000Z","size":922,"stargazers_count":1217,"open_issues_count":15,"forks_count":225,"subscribers_count":26,"default_branch":"master","last_synced_at":"2025-05-09T14:03:09.921Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/igrigorik.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2008-08-22T20:53:40.000Z","updated_at":"2025-04-04T09:01:47.000Z","dependencies_parsed_at":"2024-01-04T04:24:14.917Z","dependency_job_id":"a6791c23-d5aa-42e6-8034-acef03b83cf8","html_url":"https://github.com/igrigorik/em-http-request","commit_stats":{"total_commits":568,"total_committers":88,"mean_commits":6.454545454545454,"dds":0.4172535211267606,"last_synced_commit":"34919d760b940dfd27159bbebce5c4dac9845eb6"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igrigorik%2Fem-http-request","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igrigorik%2Fem-http-request/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igrigorik%2Fem-http-request/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igrigorik%2Fem-http-request/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/igrigorik","download_url":"https://codeload.github.com/igrigorik/em-http-request/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254041303,"owners_count":22004699,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T13:00:53.696Z","updated_at":"2025-05-13T23:07:29.287Z","avatar_url":"https://github.com/igrigorik.png","language":"Ruby","readme":"# EM-HTTP-Request \n\n[![Gem Version](https://badge.fury.io/rb/em-http-request.svg)](http://rubygems.org/gems/em-http-request)\n[![CI](https://github.com/igrigorik/em-http-request/actions/workflows/ci.yml/badge.svg)](https://github.com/igrigorik/em-http-request/actions/workflows/ci.yml)\n\nAsync (EventMachine) HTTP client, with support for:\n\n- Asynchronous HTTP API for single \u0026 parallel request execution\n- Keep-Alive and HTTP pipelining support\n- Auto-follow 3xx redirects with max depth\n- Automatic gzip \u0026 deflate decoding\n- Streaming response processing\n- Streaming file uploads\n- HTTP proxy and SOCKS5 support\n- Basic Auth \u0026 OAuth\n- Connection-level \u0026 global middleware support\n- HTTP parser via [http_parser.rb](https://github.com/tmm1/http_parser.rb)\n- Works wherever EventMachine runs: Rubinius, JRuby, MRI\n\n## Getting started\n\n    gem install em-http-request\n\n- Introductory [screencast](http://everburning.com/news/eventmachine-screencast-em-http-request)\n- [Issuing GET/POST/etc requests](https://github.com/igrigorik/em-http-request/wiki/Issuing-Requests)\n- [Issuing parallel requests with Multi interface](https://github.com/igrigorik/em-http-request/wiki/Parallel-Requests)\n- [Handling Redirects \u0026 Timeouts](https://github.com/igrigorik/em-http-request/wiki/Redirects-and-Timeouts)\n- [Keep-Alive and HTTP Pipelining](https://github.com/igrigorik/em-http-request/wiki/Keep-Alive-and-HTTP-Pipelining)\n- [Stream processing responses \u0026 uploads](https://github.com/igrigorik/em-http-request/wiki/Streaming)\n- [Issuing requests through HTTP \u0026 SOCKS5 proxies](https://github.com/igrigorik/em-http-request/wiki/Proxy)\n- [Basic Auth \u0026 OAuth](https://github.com/igrigorik/em-http-request/wiki/Basic-Auth-and-OAuth)\n- [GZIP \u0026 Deflate decoding](https://github.com/igrigorik/em-http-request/wiki/Compression)\n- [EM-HTTP Middleware](https://github.com/igrigorik/em-http-request/wiki/Middleware)\n\n## Extensions\n\nSeveral higher-order Ruby projects have incorporated em-http and other Ruby HTTP clients:\n\n- [EM-Synchrony](https://github.com/igrigorik/em-synchrony) - Collection of convenience classes and primitives to help untangle evented code (Ruby 1.9 + Fibers).\n- [Rack-Client](https://github.com/halorgium/rack-client) - Use Rack API for server, test, and client side. Supports Rack middleware!\n    - [Example in action](https://gist.github.com/802391)\n- [Faraday](https://github.com/lostisland/faraday) - Modular HTTP client library using middleware heavily inspired by Rack.\n    - [Example in action](https://gist.github.com/802395)\n\n## Testing\n\n- [WebMock](https://github.com/bblimke/webmock) - Library for stubbing and setting expectations on HTTP requests in Ruby.\n    - Example of [using WebMock, VCR \u0026 EM-HTTP](https://gist.github.com/802553)\n\n## Other libraries \u0026 applications using EM-HTTP\n\n- [VMWare CloudFoundry](https://github.com/cloudfoundry) - The open platform-as-a-service project\n- [PubSubHubbub](https://github.com/igrigorik/PubSubHubbub) - Asynchronous PubSubHubbub ruby client\n- [em-net-http](https://github.com/jfairbairn/em-net-http) - Monkeypatching Net::HTTP to play ball with EventMachine\n- [chirpstream](https://github.com/joshbuddy/chirpstream) - EM client for Twitters Chirpstream API\n- [rsolr-async](https://github.com/mwmitchell/rsolr-async) - An asynchronus connection adapter for RSolr\n- [Firering](https://github.com/EmmanuelOga/firering) - Eventmachine powered Campfire API\n- [RDaneel](https://github.com/hasmanydevelopers/RDaneel) - Ruby crawler which respects robots.txt\n- [em-eventsource](https://github.com/AF83/em-eventsource) - EventSource client for EventMachine\n- and many others.. drop me a link if you want yours included!\n\n### License\n\n(MIT License) - Copyright (c) 2011 Ilya Grigorik\n","funding_links":[],"categories":["Web Apps, Services \u0026 Interaction","Ruby"],"sub_categories":["HTTP clients"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figrigorik%2Fem-http-request","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figrigorik%2Fem-http-request","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figrigorik%2Fem-http-request/lists"}