Method: BlockBee::API#initialize

Defined in:
lib/blockbee.rb

#initialize(coin, callback_url, api_key, own_address: '', parameters: {}, bb_params: {}) ⇒ API

Returns a new instance of API.



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/blockbee.rb', line 46

def initialize(coin, callback_url, api_key, own_address: '', parameters: {}, bb_params: {})
  raise BlockBee::MissingAPIKeyError, 'Provide your API Key' if api_key.nil? || api_key.empty?
  raise BlockBee::CallbackURLMissing, 'Provide your callback URL' if callback_url.nil? || callback_url.empty?
  raise ArgumentError, 'Coin must be a string' unless coin.nil? || coin.is_a?(String)
  raise ArgumentError, 'Parameters must be a hash' unless parameters.is_a?(Hash)
  raise ArgumentError, 'BB params must be a hash' unless bb_params.is_a?(Hash)
  
  begin
    _cb = URI.parse(callback_url)
    raise ArgumentError, 'Invalid callback URL' unless _cb.scheme && _cb.host
  rescue URI::InvalidURIError
    raise ArgumentError, 'Invalid callback URL format'
  end

  # Preserve original scheme (HTTP/HTTPS) for development flexibility
  if _cb.scheme.downcase == 'https'
    @callback_url = URI::HTTPS.build(
      host: _cb.host,
      path: _cb.path,
      query: URI.encode_www_form(parameters)
    )
  else
    @callback_url = URI::HTTP.build(
      host: _cb.host,
      path: _cb.path,
      query: URI.encode_www_form(parameters)
    )
  end

  @coin = coin
  @own_address = own_address
  @parameters = parameters
  @bb_params = bb_params
  @api_key = api_key
  @payment_address = ''
end