class SVBClient

Constants

API_KEY
BASE_URL
COMPANY_ID
ENVIRO
HMAC_SECRET
KEY_ID
PARTNER_ID

Public Class Methods

new(api_key, hmac, enviro='', base_url='https://api.svb.com', company_id=nil, key_id=nil, partner_id=nil) click to toggle source
# File lib/client.rb, line 16
def initialize(api_key, hmac, enviro='', base_url='https://api.svb.com', company_id=nil, key_id=nil, partner_id=nil)
  self.API_KEY = api_key
  self.HMAC_SECRET = hmac
  self.ENVIRO = enviro if ['live', 'test'].includes? enviro
  self.BASE_URL = base_url
  self.COMPANY_ID = company_id
  self.KEY_ID = key_id
  self.PARTNER_ID = partner_id
end

Public Instance Methods

get(path, query) click to toggle source
# File lib/client.rb, line 45
def get(path, query)
  mytimestamp = timestamp_header
  signature = signature(mytimestamp, 'GET', path, query, '')

  uri = URI.parse(BASE_URL + path + query)

  request = Net::HTTP::Get.new(uri.request_uri)
  request["X-Timestamp"] = mytimestamp
  request["X-Signature"] = signature
  make_request(uri, request)
end
make_request(uri, request) click to toggle source
# File lib/client.rb, line 35
def make_request(uri, request)
  http = Net::HTTP.new(uri.host, 443)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER

  request["Authorization"] = "Bearer " + API_KEY
  request["Content-Type"] = "application/json"
  response = http.request(request)
end
post(path, jsonbody) click to toggle source
# File lib/client.rb, line 57
def post(path, jsonbody)
  mytimestamp = timestamp_header
  signature = signature(mytimestamp, 'POST', path, '', JSON.generate(jsonbody))

  uri = URI.parse(BASE_URL + path)

  request = Net::HTTP::Post.new(uri.request_uri, 'Content-Type' => 'application/json')
  request.body = jsonbody.to_json
  request["X-Timestamp"] = mytimestamp
  request["X-Signature"] = signature
  make_request(uri, request)
end
signature(timestamp, method, path, query, body) click to toggle source
# File lib/client.rb, line 26
def signature(timestamp, method, path, query, body)
  message = [timestamp, method, path, query, body].join("\n")
  OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), HMAC_SECRET, message)
end
timestamp_header() click to toggle source
# File lib/client.rb, line 31
def timestamp_header
  Time.now.to_i.to_s
end