Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

A Lite Ruby HTTP Parser based on Joyent http-parser

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 ext
Octocat-spinner-32 lib
Octocat-spinner-32 test
Octocat-spinner-32 .gitignore add jruby support March 20, 2013
Octocat-spinner-32 CHANGELOG
Octocat-spinner-32 LICENSE.md
Octocat-spinner-32 README.md
Octocat-spinner-32 Rakefile
Octocat-spinner-32 http-parser-lite.gemspec
README.md

HTTP Parser Lite

A Lite™ wrapper around the Joyent http-parser goodness for Ruby

Install

gem install http-parser-lite

Example

parser = HTTP::Parser.new

parser.on_message_begin do
  puts "message begin"
end

parser.on_message_complete do
  puts "message complete"
end

parser.on_status_complete do
  puts "status complete"
end

parser.on_headers_complete do
  puts "headers complete"
end

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

parser.on_header_field do |name|
  puts "field: #{name}"
end

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

parser.on_body do |body|
  puts "body: #{body}"
end

parser << "HTTP/1.1 200 OK\r\n"
parser << "Content-Type: text/plain;charset=utf-8\r\n"
parser << "Content-Length: 5\r\n"
parser << "Connection: close\r\n\r\n"
parser << "hello"

parser.reset

parser << "GET http://www.google.com/ HTTP/1.1\r\n\r\n"

API

HTTP::Parser
    .new(type = HTTP::Parser::TYPE_BOTH)

    #reset(type = nil)
    #parse(data)
    #<<(data)

    #on_message_begin(&block)
    #on_message_complete(&block)
    #on_url(&block)
    #on_status_complete(&block)
    #on_header_field(&block)
    #on_header_value(&block)
    #on_headers_complete(&block)
    #on_body(&block)

    #http_status
    #http_method
    #http_version

    #pause
    #resume
    #paused?

    #error?
    #error

Constants:

* HTTP::Parser::TYPE_REQUEST
* HTTP::Parser::TYPE_RESPONSE
* HTTP::Parser::TYPE_BOTH

Exceptions:

* HTTP::Parser::Error

JRuby Support

Based on flyerhzm/http-parser.java, some code has been borrowed from http_parser.rb

License

MIT

Something went wrong with that request. Please try again.