Sha256: 1776ac3e1ff5ed6373046d72b6ad0dd4d34b5f21a3a3a78040dbfeac4a612376

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

module HTTP
  class Parser
    VERSION = '1.0.1'.freeze

    TYPE_REQUEST  = 0
    TYPE_RESPONSE = 1
    TYPE_BOTH     = 2
    CALLBACKS     = %w(
      on_body
      on_header_field
      on_header_value
      on_headers_complete
      on_message_begin
      on_message_complete
      on_status_complete
      on_url
    )

    CALLBACKS.each do |name|
      define_method(name) do |&block|
        raise ArgumentError, "block expected" unless block
        @callbacks[name.to_sym] = block
      end
    end

    attr_reader :type

    def initialize type = TYPE_BOTH
      @callbacks = {}
      reset(type)
    end

    def reset value = nil
      if value
        raise ArgumentError, "Invalid parser type #{value}" unless [0, 1, 2].include?(value)
        @type = value
      end

      reset!(@type)
    end
  end
end

if RUBY_PLATFORM =~ /java/
  require_relative '../ext/vendor/http-parser.jar'
  require 'http-parser.jar'
  require 'ruby_http_parser'
else
  begin
    require_relative 'http_parser'
  rescue LoadError
    require 'http-parser/http_parser'
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
http-parser-lite-1.0.1 lib/http-parser.rb