class Stream::StreamHTTPClient

Attributes

base_path[R]
conn[R]
options[R]

Public Class Methods

new(url_generator) click to toggle source
# File lib/stream/client.rb, line 167
def initialize(url_generator)
  @options = url_generator.options
  @conn = Faraday.new(url: url_generator.url) do |faraday|
    faraday.use RaiseHttpException
    faraday.options[:open_timeout] = @options[:default_timeout]
    faraday.options[:timeout] = @options[:default_timeout]
    faraday.adapter Faraday.default_adapter
  end
  @base_path = url_generator.base_path
  @conn.path_prefix = base_path
end

Public Instance Methods

make_http_request(method, relative_url, params = nil, data = nil, headers = nil) click to toggle source
# File lib/stream/client.rb, line 179
def make_http_request(method, relative_url, params = nil, data = nil, headers = nil)
  headers['Content-Type'] = 'application/json'
  headers['X-Stream-Client'] = "stream-ruby-client-#{Stream::VERSION}"
  base_url = [base_path, relative_url].join('/').gsub(%r{/+}, '/')
  url = "#{base_url}?#{URI.encode_www_form(params)}"
  body = data.to_json if %w[post put].include? method.to_s
  response = @conn.run_request(
    method,
    url,
    body,
    headers
  )

  case response[:status].to_i
  when 200..203
    ::JSON.parse(response[:body])
  end
end