parse_header(raw)private
Parses an HTTP header raw into a hash of header fields with an Array of values.
# File lib/webrick/httputils.rb, line 143
def parse_header(raw)
header = Hash.new([].freeze)
field = nil
raw.each_line{|line|
case line
when /^([A-Za-z0-9!\#$%&'*+\-.^_`|~]+):\s*(.*?)\s*\z/m
field, value = $1, $2
field.downcase!
header[field] = [] unless header.has_key?(field)
header[field] << value
when /^\s+(.*?)\s*\z/m
value = $1
unless field
raise HTTPStatus::BadRequest, "bad header '#{line}'."
end
header[field][-1] << " " << value
else
raise HTTPStatus::BadRequest, "bad header '#{line}'."
end
}
header.each{|key, values|
values.each{|value|
value.strip!
value.gsub!(/\s+/, " ")
}
}
header
end Related methods
- Instance methods
- escape
- escape8bit
- escape_form
- escape_path
- unescape
- unescape_form
- Class methods
- dequote
- load_mime_types
- mime_type
- normalize_path
- parse_form_data
- parse_header
- parse_query
- parse_qvalues
- parse_range_header
- quote
- split_header_value
- Private methods
-
dequote -
load_mime_types -
mime_type -
normalize_path -
parse_form_data -
parse_header -
parse_query -
parse_qvalues -
parse_range_header -
quote -
split_header_value