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