class Spike

Main class

Constants

API_BASE
API_URL
API_VERSION
VERSION

Public Class Methods

new(secret_token) click to toggle source
# File lib/spike.rb, line 16
def initialize(secret_token)
  @secret_token = secret_token
end

Public Instance Methods

charge() click to toggle source
# File lib/spike.rb, line 20
def charge
  Spike::Charge.new(self)
end
get(request_path:, request_params: {}) click to toggle source
# File lib/spike.rb, line 28
def get(request_path:, request_params: {})
  require 'active_support/core_ext/object/to_query'

  c = build_curl(request_path + '?' + request_params.to_query)
  basic_auth(c)

  c.http_get

  handle_response(c)
  JSON.parse(c.body_str)
end
post(request_path:, request_params:) click to toggle source
# File lib/spike.rb, line 40
def post(request_path:, request_params:)
  c = build_curl(request_path)
  basic_auth(c)

  curb_post_fields = request_params.map { |k, v| Curl::PostField.content(k, v) }
  c.http_post(c.url, *curb_post_fields)

  handle_response(c)
  JSON.parse(c.body_str)
end
token() click to toggle source
# File lib/spike.rb, line 24
def token
  Spike::Token.new(self)
end

Private Instance Methods

basic_auth(curl) click to toggle source
# File lib/spike.rb, line 59
def basic_auth(curl)
  curl.http_auth_types = :basic
  curl.username = @secret_token
  curl.password = ''
end
build_curl(request_path) click to toggle source
# File lib/spike.rb, line 53
def build_curl(request_path)
  c = Curl::Easy.new
  c.url = API_URL + request_path
  c
end
handle_response(curl) click to toggle source
# File lib/spike.rb, line 65
def handle_response(curl)
  case curl.status.to_i
  when 400
    raise Spike::BadRequestError, JSON.parse(curl.body_str)['error']['message']
  when 401
    raise Spike::UnauthorizedError
  when 402
    raise Spike::RequestFailedError
  when 404
    raise Spike::NotFoundError
  when 500
    raise Spike::ApiServerError
  end
end