class PacketGen::Header::HTTP::Headers

@abstract Base class for HTTP headers. @author Kent 'picat' Gruber

Attributes

data[R]

Underlying Headers data (or nil). @return [Hash, nil]

to_h[R]

Underlying Headers data (or nil). @return [Hash, nil]

Public Class Methods

new() click to toggle source
# File lib/packetgen/header/http/headers.rb, line 22
def initialize
  @data = {}
end

Public Instance Methods

from_human(data) click to toggle source

Read human-readable data to populate header data. @param [String, Hash] data @return [self]

# File lib/packetgen/header/http/headers.rb, line 65
def from_human(data)
  read(data)
end
given?() click to toggle source

Check if any headers were given. @return [Boolean]

# File lib/packetgen/header/http/headers.rb, line 71
def given?
  return true unless @data.nil? || @data.empty?

  false
end
read(s_or_h) click to toggle source

Populate object from a string or directly from a hash. @param [String, Hash] s_or_h @return [self]

# File lib/packetgen/header/http/headers.rb, line 29
def read(s_or_h)
  case s_or_h
  when String
    @data = s_or_h.split("\n").map do |h|
      next unless h.include?(':')

      k, v = h.split(':', 2)
      [k, v.strip]
    end.reject(&:nil?).to_h
  when Hash
    @data = s_or_h
  end
  self
end
to_human() click to toggle source

Get a human readable string. @return [Hash]

# File lib/packetgen/header/http/headers.rb, line 58
def to_human
  @data
end
to_s() click to toggle source

Get binary string. @return [String]

# File lib/packetgen/header/http/headers.rb, line 46
def to_s
  return "\r\n" if @data.nil? || @data.empty?

  d = []
  @data.map do |k, v|
    d << "#{k}: #{v}"
  end
  d.join("\r\n") << "\r\n\r\n"
end