Class: Cryptomarket::Websocket::WalletClient
- Inherits:
-
AuthClient
- Object
- ClientBase
- AuthClient
- Cryptomarket::Websocket::WalletClient
- Defined in:
- lib/cryptomarket/websocket/wallet_client.rb
Overview
WalletClient connects via websocket to cryptomarket to get wallet information of the user. Uses SHA256 as auth method and authenticates automatically.
Instance Method Summary collapse
- #build_subscription_hash ⇒ Object
-
#get_transactions(callback:, tx_ids: nil, types: nil, subtypes: nil, statuses: nil, currencies: nil, from: nil, till: nil, id_from: nil, id_till: nil, order_by: nil, sort: nil, limit: nil, offset: nil, group_transactions: nil) ⇒ Object
Get the transaction history of the account Important: - The list of supported transaction types may be expanded in future versions - Some transaction subtypes are reserved for future use and do not purport to provide any functionality on the platform - The list of supported transaction subtypes may be expanded in future versions.
-
#get_wallet_balance(currency:, callback:) ⇒ Object
Get the user’s wallet balance of a currency.
-
#get_wallet_balances(callback:) ⇒ Object
Get the user’s wallet balance for all currencies with balance.
-
#initialize(api_key:, api_secret:, window: nil) ⇒ WalletClient
constructor
- Creates a new client and authenticates it to the server ==== Params
String
api_key
- the user api key
String
api_secret
- the user api secret
Integer
window
-
Maximum difference between the creation of the request and the moment of request processing in milliseconds.
- the user api secret
- the user api key
- Creates a new client and authenticates it to the server ==== Params
-
#subscribe_to_transactions(callback:, result_callback: nil) ⇒ Object
A transaction notification occurs each time a transaction has been changed, such as creating a transaction, updating the pending state (e.g., the hash assigned) or completing a transaction.
-
#subscribe_to_wallet_balance(callback:, result_callback: nil) ⇒ Object
subscribe to a feed of the user’s wallet balances.
-
#unsubscribe_to_transactions(result_callback: nil) ⇒ Object
stop recieving the feed of transactions changes.
-
#unsubscribe_to_wallet_balance(result_callback: nil) ⇒ Object
stop recieving the feed of balances changes.
Methods inherited from AuthClient
#authenticate, #build_auth_payload, #connect, #connected?, #wait_authed
Methods inherited from ClientBase
#close, #connect, #connected?, #get_callback_for_response, #handle, #handle_good_response, #handle_notification, #handle_response, #on_close, #on_close=, #on_connect, #on_connect=, #on_error, #on_error=, #on_open, #request, #send_subscription, #send_unsubscription, #store_callback_and_send
Constructor Details
#initialize(api_key:, api_secret:, window: nil) ⇒ WalletClient
Creates a new client and authenticates it to the server
Params
String
api_key
-
the user api key
String
api_secret
-
the user api secret
Integer
window
-
Maximum difference between the creation of the request and the moment of request processing in milliseconds. Max is 60_000. Defaul is 10_000
18 19 20 21 22 23 24 25 |
# File 'lib/cryptomarket/websocket/wallet_client.rb', line 18 def initialize(api_key:, api_secret:, window: nil) super( url: 'wss://api.exchange.cryptomkt.com/api/3/ws/wallet', api_key: api_key, api_secret: api_secret, window: window, subscription_keys: build_subscription_hash) end |
Instance Method Details
#build_subscription_hash ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/cryptomarket/websocket/wallet_client.rb', line 27 def build_subscription_hash transaction = 'transaction' balance = 'balance' { 'subscribe_transactions' => [transaction, Args::NotificationType::COMMAND], 'unsubscribe_transactions' => [transaction, Args::NotificationType::COMMAND], 'transaction_update' => [transaction, Args::NotificationType::UPDATE], 'subscribe_wallet_balances' => [balance, Args::NotificationType::COMMAND], 'unsubscribe_wallet_balances' => [balance, Args::NotificationType::COMMAND], 'wallet_balances' => [balance, Args::NotificationType::SNAPSHOT], 'wallet_balance_update' => [balance, Args::NotificationType::UPDATE] } end |
#get_transactions(callback:, tx_ids: nil, types: nil, subtypes: nil, statuses: nil, currencies: nil, from: nil, till: nil, id_from: nil, id_till: nil, order_by: nil, sort: nil, limit: nil, offset: nil, group_transactions: nil) ⇒ Object
Get the transaction history of the account Important:
- The list of supported transaction types may be expanded in future versions
- Some transaction subtypes are reserved for future use and do not purport to provide any functionality on the platform
- The list of supported transaction subtypes may be expanded in future versions
Requires the “Payment information” API key Access Right
api.exchange.cryptomkt.com/#get-transactions
Params
Proc
callback
-
A
Proc
called with a list of transactions Array[String]
tx_ids
-
Optional. List of transaction identifiers to query
Array[String]
types
-
Optional. List of types to query. valid types are: ‘DEPOSIT’, ‘WITHDRAW’, ‘TRANSFER’ and ‘SWAP’
Array[String]
subtyes
-
Optional. List of subtypes to query. valid subtypes are: ‘UNCLASSIFIED’, ‘BLOCKCHAIN’, ‘AIRDROP’, ‘AFFILIATE’, ‘STAKING’, ‘BUY_CRYPTO’, ‘OFFCHAIN’, ‘FIAT’, ‘SUB_ACCOUNT’, ‘WALLET_TO_SPOT’, ‘SPOT_TO_WALLET’, ‘WALLET_TO_DERIVATIVES’, ‘DERIVATIVES_TO_WALLET’, ‘CHAIN_SWITCH_FROM’, ‘CHAIN_SWITCH_TO’ and ‘INSTANT_EXCHANGE’
Array[String]
statuses
-
Optional. List of statuses to query. valid subtypes are: ‘CREATED’, ‘PENDING’, ‘FAILED’, ‘SUCCESS’ and ‘ROLLED_BACK’
- +Array
currencies
-
Optional. List of currencies ids.
String
from
-
Optional. Interval initial value when ordering by ‘created_at’. As Datetime
String
till
-
Optional. Interval end value when ordering by ‘created_at’. As Datetime
String
id_from
-
Optional. Interval initial value when ordering by id. Min is 0
String
id_till
-
Optional. Interval end value when ordering by id. Min is 0
String
order_by
-
Optional. sorting parameter.‘created_at’ or ‘id’. Default is ‘created_at’
String
sort
-
Optional. Sort direction. ‘ASC’ or ‘DESC’. Default is ‘DESC’
Integer
limit
-
Optional. Transactions per query. Defaul is 100. Max is 1000
Integer
offset
-
Optional. Default is 0. Max is 100000
bool
group_transactions
-
Optional. Flag indicating whether the returned transactions will be parts of a single operation. Default is false
158 159 160 161 162 163 164 165 166 167 |
# File 'lib/cryptomarket/websocket/wallet_client.rb', line 158 def get_transactions( # rubocop:disable Metrics/ParameterLists callback:, tx_ids: nil, types: nil, subtypes: nil, statuses: nil, currencies: nil, from: nil, till: nil, id_from: nil, id_till: nil, order_by: nil, sort: nil, limit: nil, offset: nil, group_transactions: nil ) request('get_transactions', callback, { tx_ids: tx_ids, types: types, subtypes: subtypes, statuses: statuses, currencies: currencies, from: from, till: till, id_from: id_from, id_till: id_till, order_by: order_by, sort: sort, limit: limit, offset: offset, group_transactions: group_transactions }) end |
#get_wallet_balance(currency:, callback:) ⇒ Object
Get the user’s wallet balance of a currency
Requires the “Payment information” API key Access Right
api.exchange.cryptomkt.com/#request-wallet-balance
Params
String
currency
-
The currency code to query the balance
Proc
callback
-
A
Proc
called with a user balance
119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/cryptomarket/websocket/wallet_client.rb', line 119 def get_wallet_balance(currency:, callback:) interceptor = lambda { |err, balance| unless err.nil? callback.call(err, nil) return end balance['currency'] = currency callback.call(err, balance) } request('wallet_balance', interceptor, { currency: currency }) end |
#get_wallet_balances(callback:) ⇒ Object
Get the user’s wallet balance for all currencies with balance
api.exchange.cryptomkt.com/#request-wallet-balance
Params
Proc
callback
-
A
Proc
called with a list of the user balances
105 106 107 |
# File 'lib/cryptomarket/websocket/wallet_client.rb', line 105 def get_wallet_balances(callback:) request('wallet_balances', callback) end |
#subscribe_to_transactions(callback:, result_callback: nil) ⇒ Object
A transaction notification occurs each time a transaction has been changed, such as creating a transaction, updating the pending state (e.g., the hash assigned) or completing a transaction
api.exchange.cryptomkt.com/#subscribe-to-transactions
Params
Proc
callback
-
A
Proc
that recieves notifications as a list of reports, and the type of notification (only ‘update’) Proc
result_callback
-
Optional. A
Proc
of two arguments, An exception and a result, called either with the exception or with the result, a boolean value, indicating the success of the subscription
48 49 50 51 52 53 |
# File 'lib/cryptomarket/websocket/wallet_client.rb', line 48 def subscribe_to_transactions(callback:, result_callback: nil) interceptor = lambda { |notification, _type| callback.call(notification) } send_subscription('subscribe_transactions', interceptor, nil, result_callback) end |
#subscribe_to_wallet_balance(callback:, result_callback: nil) ⇒ Object
subscribe to a feed of the user’s wallet balances
only non-zero values are present
api.exchange.cryptomkt.com/#subscribe-to-wallet-balances
Params
Proc
callback
-
A
Proc
that recieves notifications as a list of balances, and the type of notification (either ‘snapshot’ or ‘update’) Proc
result_callback
-
Optional. A
Proc
of two arguments, An exception and a result, called either with the exception or with the result, a boolean value, indicating the success of the subscription
76 77 78 79 80 81 82 83 84 85 |
# File 'lib/cryptomarket/websocket/wallet_client.rb', line 76 def subscribe_to_wallet_balance(callback:, result_callback: nil) interceptor = proc { |notification, type| if type == Args::NotificationType::SNAPSHOT callback.call(notification, type) else callback.call([notification], type) end } send_subscription('subscribe_wallet_balances', interceptor, nil, result_callback) end |
#unsubscribe_to_transactions(result_callback: nil) ⇒ Object
stop recieving the feed of transactions changes
api.exchange.cryptomkt.com/#subscribe-to-transactions
Params
Proc
callback
-
Optional. A
Proc
of two arguments, An exception and a result, called either with the exception or with the result, a boolean value, indicating the success of the unsubscription
62 63 64 |
# File 'lib/cryptomarket/websocket/wallet_client.rb', line 62 def unsubscribe_to_transactions(result_callback: nil) send_unsubscription('unsubscribe_transactions', result_callback, nil) end |
#unsubscribe_to_wallet_balance(result_callback: nil) ⇒ Object
stop recieving the feed of balances changes
api.exchange.cryptomkt.com/#subscribe-to-wallet-balances
Params
Proc
callback
-
Optional. A
Proc
of two arguments, An exception and a result, called either with the exception or with the result, a boolean value, indicating the success of the unsubscription
94 95 96 |
# File 'lib/cryptomarket/websocket/wallet_client.rb', line 94 def unsubscribe_to_wallet_balance(result_callback: nil) send_unsubscription('unsubscribe_wallet_balances', result_callback, nil) end |