Module: Cubits

Extended by:
Helpers
Defined in:
lib/cubits.rb,
lib/cubits/quote.rb,
lib/cubits/errors.rb,
lib/cubits/account.rb,
lib/cubits/channel.rb,
lib/cubits/helpers.rb,
lib/cubits/invoice.rb,
lib/cubits/version.rb,
lib/cubits/callback.rb,
lib/cubits/resource.rb,
lib/cubits/connection.rb,
lib/cubits/resource_collection.rb

Defined Under Namespace

Modules: Helpers Classes: Account, BadRequest, Callback, Channel, ClientError, Connection, ConnectionError, Forbidden, InsecureCallback, InternalServerError, InvalidSignature, Invoice, NotFound, Quote, Resource, ResourceCollection, ServerError, UnsupportedMediaType

Constant Summary collapse

DEFAULT_BASE_URL =
URI.parse('https://api.cubits.com/')
VERSION =
'0.7.0'

Class Method Summary collapse

Methods included from Helpers

available?, buy, sell, send_money

Class Method Details

.active_connection_keyString

Returns current Cubits connection key (Cubits API key)

Returns:

  • (String)

    current thread-local active connection key or the last configured connection key



51
52
53
# 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) ⇒ Object

Sets current Cubits connection to given Cubits API key

Parameters:

  • key (String)

    Cubits API key of the configured connection



59
60
61
62
63
64
# 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_urlObject

Returns current base API URL



92
93
94
# File 'lib/cubits.rb', line 92

def self.base_url
  @base_url ||= DEFAULT_BASE_URL
end

.base_url=(new_base_url) ⇒ Object

Sets new base API URL

Parameters:

  • new_base_url (URI, String)


100
101
102
103
104
# 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 = {}) ⇒ Object

Configure Cubits connection

Parameters:

  • params (Hash) (defaults to: {})
  • params (:key) (defaults to: {})
    String

    API key obtained from Cubits

  • params (:secret) (defaults to: {})
    String

    API secret obtained from Cubits



27
28
29
30
# File 'lib/cubits.rb', line 27

def self.configure(params = {})
  @connections ||= {}
  @connections[params[:key]] = Connection.new(params)
end

.connection(key = active_connection_key) ⇒ Connection

Returns configured Connection object

Parameters:

  • key (String) (defaults to: active_connection_key)

    (optional) Cubits API key of the configured connection

Returns:

  • (Connection)

    Connection object matching the requested Cubits API key or Connection object matching Cubits.active_connection_key



39
40
41
42
43
44
# 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

.loggerObject

Returns current Logger object



80
81
82
# File 'lib/cubits.rb', line 80

def self.logger
  @logger ||= Logger.new(nil)
end

.logger=(new_logger) ⇒ Object

Sets new Logger object



86
87
88
# File 'lib/cubits.rb', line 86

def self.logger=(new_logger)
  @logger = new_logger
end

.resetObject

Resets all internal states



108
109
110
111
# File 'lib/cubits.rb', line 108

def self.reset
  @connections = {}
  @logger = nil
end

.with_connection_key(key) ⇒ Object

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

Parameters:

  • key (String)

    Cubits API key of the configured connection



70
71
72
73
74
75
76
# 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