Sha256: 4baaf1e1fccd02141529120c7a9e930bf6e40c5665ad173727be8c2eda197e55

Contents?: true

Size: 1.66 KB

Versions: 4

Compression:

Stored size: 1.66 KB

Contents

# http_parser.rb

A simple callback-based HTTP request/response parser for writing http
servers, clients and proxies.

This gem is built on top of [joyent/http-parser](http://github.com/joyent/http-parser) and its java port [a2800276/http-parser.java](http://github.com/a2800276/http-parser.java).

## Supported Platforms

This gem aims to work on all major Ruby platforms, including:

- MRI 1.8 and 1.9
- Rubinius
- JRuby
- win32

## Usage

    require "http/parser"

    parser = Http::Parser.new

    parser.on_headers_complete = proc do
      p parser.http_version

      p parser.http_method # for requests
      p parser.request_url

      p parser.status_code # for responses

      p parser.headers
    end

    parser.on_body = proc do |chunk|
      # One chunk of the body
      p chunk
    end

    parser.on_message_complete = proc do |env|
      # Headers and body is all parsed
      puts "Done!"
    end

    # Feed raw data from the socket to the parser
    parser << raw_data

## Advanced Usage

### Accept callbacks on an object

    module MyHttpConnection
      def connection_completed
        @parser = Http::Parser.new(self)
      end

      def receive_data(data)
        @parser << data
      end

      def on_message_begin
        @headers = nil
        @body = ''
      end

      def on_headers_complete
        @headers = @parser.headers
      end

      def on_body(chunk)
        @body << chunk
      end

      def on_message_complete
        p [@headers, @body]
      end
    end

### Stop parsing after headers

    parser = Http::Parser.new
    parser.on_headers_complete = proc{ :stop }

    offset = parser << request_data
    body = request_data[offset..-1]

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
http_parser.rb-0.5.3 README.md
http_parser.rb-0.5.3-x86-mswin32-60 README.md
http_parser.rb-0.5.3-x86-mingw32 README.md
http_parser.rb-0.5.3-java README.md