0.85
Low commit activity in last 3 years
There's a lot of open issues
A long-lived project that still receives updates
A super fast http parser for ruby. Cross platform and multiple ruby implementation support thanks to ffi.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
 Project Readme

http-parser

Ruby FFI bindings to http-parser Build Status

Install

gem install http-parser

This gem will compile a local copy of http-parser

Usage

require 'rubygems'
require 'http-parser'

#
# Create a shared parser
#
parser = HttpParser::Parser.new do |parser|
  parser.on_message_begin do |inst|
    puts "message begin"
  end

  parser.on_message_complete do |inst|
    puts "message end"
  end

  parser.on_url do |inst, data|
    puts "url: #{data}"
  end

  parser.on_header_field do |inst, data|
    puts "field: #{data}"
  end

  parser.on_header_value do |inst, data|
    puts "value: #{data}"
  end
end

#
# Create state objects to track requests through the parser
#
request = HttpParser::Parser.new_instance do |inst|
  inst.type = :request
end

#
# Parse requests
#
parser.parse request, "GET /foo HTTP/1.1\r\n"
sleep 3
parser.parse request, "Host: example.com\r\n"
sleep 3
parser.parse request, "\r\n"

#
# Re-use the memory for another request
#
request.reset!

Acknowledgements