Sha256: 7566b6a332456602c347e259b6d7ce2a0d3ab7612b64d60eb7b3c4a6d166ab59

Contents?: true

Size: 733 Bytes

Versions: 1

Compression:

Stored size: 733 Bytes

Contents

# A stupid HTTP BinData class to demonstrate the proxy
require_relative '../bd_util'

module DumbHttp
  class Headers < BinData::Array 
    default_parameter read_until: lambda { element == '' }
    line line_end: "\r\n"
  end

  class BaseMessage < BinData::Record
    headers :headers

    def body_len
      (headers.snapshot.grep(/\AContent-Length: (\d+)/) { $1.to_i }).first || 0
    end

    def summary; headers.first.sub(/HTTP\/\d\.\d/,'').strip; end
  end

  class Message < BaseMessage
    string :body, display_as: 'multiline', onlyif: lambda { body_len > 0 }, length: :body_len
  end

  class BinMessage < BaseMessage
    string :body, display_as: 'hexdump', onlyif: lambda { body_len > 0 }, length: :body_len
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
binproxy-1.0.0 lib/binproxy/parsers/dumb_http.rb