class TurbaKit::Client

Public Class Methods

new(api_key, options = {}) click to toggle source
# File lib/turba_kit.rb, line 38
def initialize(api_key, options = {})
  @api_key = api_key
  default_options = {
    version: '/v2',
    domain: 'api.turba-webservices.com',
    scheme: 'https'
  }
  @options = default_options.merge(options)
end

Public Instance Methods

api_url() click to toggle source
# File lib/turba_kit.rb, line 48
def api_url
  @api_url ||= "#{@options[:scheme]}://#{@options[:domain]}#{@options[:version]}"
end
default_params() click to toggle source
# File lib/turba_kit.rb, line 52
def default_params
  @default_params ||= { api_key: @api_key }
end
delete_request(endpoint) click to toggle source
# File lib/turba_kit.rb, line 86
def delete_request(endpoint)
  request = Typhoeus::Request.new(
    "#{api_url}#{endpoint}",
    method: :delete,
    params: default_params,
  ).run

  response(request, nil)
end
get_request(endpoint, options = {}) click to toggle source
# File lib/turba_kit.rb, line 96
def get_request(endpoint, options = {})
  options[:namespace] ||= nil
  options[:accept] ||= "application/json"
  options[:params] ||= {}

  request = Typhoeus::Request.new(
    "#{api_url}#{endpoint}",
    method: :get,
    params: default_params.merge(options[:params]),
    headers: { Accept: options[:accept] }
  ).run

  p request

  response(request, options[:namespace])
end
post_request(endpoint, options = {}) click to toggle source
# File lib/turba_kit.rb, line 71
def post_request(endpoint, options = {})
  options[:namespace] ||= nil
  options[:accept] ||= "application/json"
  options[:params] ||= {}

  request = Typhoeus::Request.new(
    "#{api_url}#{endpoint}",
    method: :post,
    params: default_params,
    body: Oj.dump(options[:params], mode: :compat),
    headers: { "Content-Type" => options[:accept] }
  ).run
  response(request, options[:namespace])
end
put_request(endpoint, options = {}) click to toggle source
# File lib/turba_kit.rb, line 56
def put_request(endpoint, options = {})
  options[:namespace] ||= nil
  options[:accept] ||= "application/json"
  options[:params] ||= {}

  request = Typhoeus::Request.new(
    "#{api_url}#{endpoint}",
    method: :put,
    params: default_params,
    body: Oj.dump(options[:params], mode: :compat),
    headers: { "Content-Type" => options[:accept] }
  ).run
  response(request, options[:namespace])
end
response(request, namespace) click to toggle source
# File lib/turba_kit.rb, line 113
def response(request, namespace)
  body = Oj.load(request.body)
  body = body.with_indifferent_access unless body.nil?
  status = request.options[:response_code]
  body ||= request.body

  if (400..599).include?(status)
    return Error.from_response(body, status)
  end

  return "" if body.empty?
  RecursiveOpenStruct.new(body, recurse_over_arrays: true)
end