class Singleplatform::Client

Constants

BASE_URL

Attributes

base_url[RW]
client_id[RW]
client_secret[RW]

Public Class Methods

new(args = {}) click to toggle source

Initializes a new API Client Object

@return [Singleplatform::Client]

# File lib/singleplatform/client.rb, line 23
def initialize(args = {})
  @base_url      = BASE_URL
  @client_id     = args[:client_id]
  @client_secret = args[:client_secret]
  raise Error::MissingCredentialsError if credentials_missing?
end

Private Instance Methods

credentials_missing?() click to toggle source

Helper method to determine if credentials are missing and, if

so, raise Error::MissingCredentials

@return [Boolean]

# File lib/singleplatform/client.rb, line 58
def credentials_missing?
  client_id.nil? || client_secret.nil?
end
generate_signature(base_string) click to toggle source

Calculate the signature, Base64 and URL encode it

@param base_string [String] @return [String]

# File lib/singleplatform/client.rb, line 49
def generate_signature(base_string)
  key = OpenSSL::HMAC.digest('sha1', client_secret, base_string)
  CGI::escape(Base64.encode64(key).chomp)
end
generate_url(path, params = {}) click to toggle source

Form the complete URL for a given endpoint

@note Signature must be the last parameter

@param path [String] @param params [Hash] @return [String]

# File lib/singleplatform/client.rb, line 39
def generate_url(path, params = {})
  params['client'] ||= client_id
  signature_base_string = "#{path}?#{URI.encode_www_form(params)}"
  "#{base_url}#{signature_base_string}&signature=#{generate_signature(signature_base_string)}"
end
valid_date?(date) click to toggle source

Helper method to determine if a date is valid

@return [Boolean]

# File lib/singleplatform/client.rb, line 74
def valid_date?(date)
  return (not DateTime.parse(date).nil?)
rescue StandardError => e
  return false
end
valid_params?(*args) click to toggle source

Helper method to determine if any number of params are nil,

empty or just spaces.

@return [Boolean]

# File lib/singleplatform/client.rb, line 66
def valid_params?(*args)
  args.map { |a| return false if a.nil? || a.to_s.gsub(/\s/, '').empty? }
  true
end