Class: Seahorse::Client::Http::AsyncResponse

Inherits:
Response
  • Object
show all
Defined in:
lib/seahorse/client/http/async_response.rb

Instance Attribute Summary

Attributes inherited from Response

#error, #headers, #status_code

Instance Method Summary collapse

Methods inherited from Response

#body, #body=, #body_contents, #on_data, #on_done, #on_error, #on_headers, #on_success, #reset, #signal_data, #signal_error

Constructor Details

#initialize(options = {}) ⇒ AsyncResponse

Returns a new instance of AsyncResponse.



8
9
10
# File 'lib/seahorse/client/http/async_response.rb', line 8

def initialize(options = {})
  super
end

Instance Method Details

#signal_done(options = {}) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/seahorse/client/http/async_response.rb', line 24

def signal_done(options = {})
  # H2 only has header and body
  # ':status' header will be sent back
  if options.keys.sort == [:body, :headers]
    signal_headers(options[:headers])
    signal_data(options[:body])
    signal_done
  elsif options.empty?
    @body.rewind if @body.respond_to?(:rewind)
    @done = true
    emit(:done)
  else
    msg = "options must be empty or must contain :headers and :body"
    raise ArgumentError, msg
  end
end

#signal_headers(headers) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/seahorse/client/http/async_response.rb', line 12

def signal_headers(headers)
  # H2 headers arrive as array of pair
  hash = headers.inject({}) do |h, pair|
    key, value = pair
    h[key] = value
    h
  end
  @status_code = hash[":status"].to_i
  @headers = Headers.new(hash)
  emit(:headers, @status_code, @headers)
end