def parse_line(input)
for line in input
line.chomp!("\n")
line.chomp!("\r")
next if line.empty?
version, status, reason = line.split(/\s+/, 3)
if (version.nil? || version.empty?) then
raise ParseError, "failed to parse a status line: #{line.inspect}"
end
if (status.nil? || status.empty?) then
raise ParseError, "failed to parse a status line: #{line.inspect}"
end
if (reason.nil? || reason.empty?) then
raise ParseError, "failed to parse a status line: #{line.inspect}"
end
if (version =~ %r"^HTTP/\d+\.\d+$") then
@version = version
else
raise ParseError, "invalid HTTP version format: #{line.inspect}"
end
if (status =~ /^\d\d\d$/) then
@status = status.to_i
else
raise ParseError, "invalid status code format: #{line.inspect}"
end
@reason = reason
break
end
nil
end