Module: Patron::HeaderParser
- Defined in:
- lib/patron/header_parser.rb
Defined Under Namespace
Classes: SingleResponseHeaders
Constant Summary collapse
- HTTP_STATUS_LINE_START_RE =
/^HTTP\/\d(\.\d)? \d+/
- HEADER_LINE_START_RE =
/^[^:]+\:/
Class Method Summary collapse
-
.parse(string_of_headers_from_multiple_responses_in_sequence) ⇒ Object
Parses a string with lines delimited with CRLF into an Array of SingleResponseHeaders objects.
Class Method Details
.parse(string_of_headers_from_multiple_responses_in_sequence) ⇒ Object
Parses a string with lines delimited with CRLF into an Array of SingleResponseHeaders objects. libCURL supplies us multiple responses in sequence, so if we encounter multiple redirect or operate through a proxy - that adds ConnectionEstablished status at the beginning of the response - we need to account for parsing multiple response headres and potentially preserving them.
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/patron/header_parser.rb', line 18 def self.parse(string_of_headers_from_multiple_responses_in_sequence) responses = [] string_of_headers_from_multiple_responses_in_sequence.each_line do |matched_line| if matched_line =~ HTTP_STATUS_LINE_START_RE responses << SingleResponseHeaders.new(matched_line.strip, []) elsif matched_line =~ HEADER_LINE_START_RE raise "Header should follow an HTTP status line" unless responses.any? responses[-1].headers << matched_line.strip end # else it is the end of the headers for the request end responses end |