module Cubits

Constants

DEFAULT_BASE_URL
VERSION

Public Class Methods

active_connection_key() click to toggle source

Returns current Cubits connection key (Cubits API key)

@return [String] current thread-local active connection key

or the last configured connection key
# File lib/cubits.rb, line 51
def self.active_connection_key
  Thread.current[:cubits_active_connection_key] || @connections&.keys&.last
end
active_connection_key=(key) click to toggle source

Sets current Cubits connection to given Cubits API key

@param key [String] Cubits API key of the configured connection

# File lib/cubits.rb, line 59
def self.active_connection_key=(key)
  if @connections.nil? || @connections[key].nil?
    fail ConnectionError, "Cubits connection is not configured for key #{key}"
  end
  Thread.current[:cubits_active_connection_key] = key
end
base_url() click to toggle source

Returns current base API URL

# File lib/cubits.rb, line 92
def self.base_url
  @base_url ||= DEFAULT_BASE_URL
end
base_url=(new_base_url) click to toggle source

Sets new base API URL

@param new_base_url [URI,String]

# File lib/cubits.rb, line 100
def self.base_url=(new_base_url)
  new_base_url = URI.parse(new_base_url) if new_base_url.is_a?(String)
  fail ArgumentError, 'URI is expected as new_base_url' unless new_base_url.is_a?(URI)
  @base_url = new_base_url
end
configure(params = {}) click to toggle source

Configure Cubits connection

@param params [Hash] @param params [String] API key obtained from Cubits @param params [String] API secret obtained from Cubits

# File lib/cubits.rb, line 27
def self.configure(params = {})
  @connections ||= {}
  @connections[params[:key]] = Connection.new(params)
end
connection(key = active_connection_key) click to toggle source

Returns configured Connection object

@param key [String] (optional) Cubits API key of the configured connection

@return [Connection] Connection object matching the requested Cubits API key

or Connection object matching Cubits.active_connection_key
# File lib/cubits.rb, line 39
def self.connection(key = active_connection_key)
  if @connections.nil? || @connections[key].nil?
    fail ConnectionError, "Cubits connection is not configured for key #{key || '(default)'}"
  end
  @connections[key]
end
logger() click to toggle source

Returns current Logger object

# File lib/cubits.rb, line 80
def self.logger
  @logger ||= Logger.new(nil)
end
logger=(new_logger) click to toggle source

Sets new Logger object

# File lib/cubits.rb, line 86
def self.logger=(new_logger)
  @logger = new_logger
end
reset() click to toggle source

Resets all internal states

# File lib/cubits.rb, line 108
def self.reset
  @connections = {}
  @logger = nil
end
with_connection_key(key) { || ... } click to toggle source

Sets current Cubits connection to given Cubits API key and yields given block

@param key [String] Cubits API key of the configured connection

# File lib/cubits.rb, line 70
def self.with_connection_key(key)
  connection_key_was = active_connection_key
  self.active_connection_key = key
  yield if block_given?
ensure
  self.active_connection_key = connection_key_was
end