Method: Pebblebed::GenericClient#stream

Defined in:
lib/pebblebed/clients/generic_client.rb

#stream(method, url = '', params = {}, on_data:, accept: nil) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/pebblebed/clients/generic_client.rb', line 26

def stream(method, url = '', params = {}, on_data:, accept: nil)
  method_name = "stream_#{method.to_s.downcase}"
  raise "Method not supported for streaming" unless Pebblebed::Http.respond_to?(method_name)

  headers = {}
  if accept
    headers['Accept'] = accept
  end

  if accept == 'application/x-ndjson'
    buffer = NdjsonBuffer.new(on_data)
    response = Pebblebed::Http.send(method_name,
      service_url(url), service_params(params),
      headers: headers,
      on_data: ->(data) {
        buffer << data
      })
    buffer.check_end!
    return response
  end

  return Pebblebed::Http.send(method_name, service_url(url), service_params(params),
    headers: headers,
    on_data: on_data)
end