class Customerio::BaseClient

Public Class Methods

new(auth, options = {}) click to toggle source
# File lib/customerio/base_client.rb, line 21
def initialize(auth, options = {})
  @auth = auth
  @timeout = options[:timeout] || DEFAULT_TIMEOUT
  @base_uri = options[:url]
end

Public Instance Methods

request(method, path, body = nil, headers = {}) click to toggle source
# File lib/customerio/base_client.rb, line 27
def request(method, path, body = nil, headers = {})
  execute(method, path, body, headers)
end
request_and_verify_response(method, path, body = nil, headers = {}) click to toggle source
# File lib/customerio/base_client.rb, line 31
def request_and_verify_response(method, path, body = nil, headers = {})
  verify_response(request(method, path, body, headers))
end

Private Instance Methods

execute(method, path, body = nil, headers = {}) click to toggle source
# File lib/customerio/base_client.rb, line 37
def execute(method, path, body = nil, headers = {})
  uri = URI.join(@base_uri, path)

  session = Net::HTTP.new(uri.host, uri.port)
  session.use_ssl = (uri.scheme == 'https')
  session.open_timeout = @timeout
  session.read_timeout = @timeout

  req = request_class(method).new(uri.path)

  if @auth.has_key?(:site_id) && @auth.has_key?(:api_key)
    req.initialize_http_header(headers)
    req.basic_auth @auth[:site_id], @auth[:api_key]
  else
    headers['Authorization'] = "Bearer #{@auth[:app_key]}"
    req.initialize_http_header(headers)
  end

  if !body.nil?
    req.add_field('Content-Type', 'application/json')
    req.body = MultiJson.dump(body)
  end

  session.start do |http|
    http.request(req)
  end
end
request_class(method) click to toggle source
# File lib/customerio/base_client.rb, line 65
def request_class(method)
  case method
  when :post
    Net::HTTP::Post
  when :put
    Net::HTTP::Put
  when :delete
    Net::HTTP::Delete
  else
    raise InvalidRequest.new("Invalid request method #{method.inspect}")
  end
end
verify_response(response) click to toggle source
# File lib/customerio/base_client.rb, line 78
def verify_response(response)
  case response
  when Net::HTTPSuccess then
    response
  else
    raise InvalidResponse.new(response.code, response.body, response)
  end
end