Class: Soren::Parsers::Response
- Defined in:
- lib/soren/parsers/response.rb,
lib/soren/parsers/response/body.rb,
lib/soren/parsers/response/headers.rb,
lib/soren/parsers/response/status_line.rb
Defined Under Namespace
Classes: Body, Headers, StatusLine
Instance Method Summary collapse
-
#initialize(source, deadline: nil) ⇒ Response
constructor
: (untyped, ?deadline: Deadline?) -> void.
-
#parse ⇒ Object
: -> Hash[Symbol, untyped].
Constructor Details
#initialize(source, deadline: nil) ⇒ Response
: (untyped, ?deadline: Deadline?) -> void
21 22 23 24 |
# File 'lib/soren/parsers/response.rb', line 21 def initialize(source, deadline: nil) @source = source #: untyped @deadline = deadline #: Deadline? end |
Instance Method Details
#parse ⇒ Object
: -> Hash[Symbol, untyped]
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/soren/parsers/response.rb', line 27 def parse reader = Soren::Socket::Reader.new(@source, deadline: @deadline) status_line = reader.read_line if status_line.blank? raise Soren::Error::ParseError, 'raw_response must be a non-empty String' end header_lines = read_header_lines(reader) parsed_status_line = Soren::Parsers::Response::StatusLine.new(status_line.strip).parse parsed_headers = Soren::Parsers::Response::Headers.new(header_lines).parse version_object = Soren::Types::Response::Version.new(parsed_status_line[:version]) code = Soren::Types::Response::Code.new(parsed_status_line[:code]) = Soren::Types::Response::Message.new(parsed_status_line[:message]) headers_object = Soren::Types::Response::Headers.new(parsed_headers) parsed_body = Soren::Parsers::Response::Body.new( reader: reader, headers: headers_object, code: code, ).parse body_object = Soren::Types::Response::Body.new(parsed_body) { status_line: { version: version_object, code: code, message: , }, headers: headers_object, body: body_object, } end |