coinbase-sdk 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/coinbase/address.rb +73 -19
- data/lib/coinbase/asset.rb +80 -56
- data/lib/coinbase/balance.rb +10 -6
- data/lib/coinbase/client/api/assets_api.rb +91 -0
- data/lib/coinbase/client/api/balances_api.rb +97 -0
- data/lib/coinbase/client/api/external_addresses_api.rb +242 -0
- data/lib/coinbase/client/api/server_signers_api.rb +13 -3
- data/lib/coinbase/client/api/stake_api.rb +236 -0
- data/lib/coinbase/client/api/transfer_api.rb +114 -0
- data/lib/coinbase/client/models/broadcast_trade_request.rb +14 -4
- data/lib/coinbase/client/models/build_staking_operation_request.rb +291 -0
- data/lib/coinbase/client/models/feature.rb +42 -0
- data/lib/coinbase/client/models/fetch_staking_rewards200_response.rb +258 -0
- data/lib/coinbase/client/models/fetch_staking_rewards_request.rb +343 -0
- data/lib/coinbase/client/models/get_staking_context_request.rb +274 -0
- data/lib/coinbase/client/models/partial_eth_staking_context.rb +257 -0
- data/lib/coinbase/client/models/request_faucet_funds200_response.rb +222 -0
- data/lib/coinbase/client/models/server_signer_list.rb +275 -0
- data/lib/coinbase/client/models/staking_context.rb +222 -0
- data/lib/coinbase/client/models/staking_context_context.rb +104 -0
- data/lib/coinbase/client/models/staking_operation.rb +222 -0
- data/lib/coinbase/client/models/staking_reward.rb +308 -0
- data/lib/coinbase/client/models/trade.rb +13 -4
- data/lib/coinbase/client/models/transaction.rb +45 -1
- data/lib/coinbase/client/models/transfer.rb +33 -1
- data/lib/coinbase/client/models/wallet.rb +20 -1
- data/lib/coinbase/client.rb +14 -0
- data/lib/coinbase/constants.rb +2 -27
- data/lib/coinbase/errors.rb +50 -62
- data/lib/coinbase/network.rb +6 -20
- data/lib/coinbase/server_signer.rb +57 -0
- data/lib/coinbase/trade.rb +147 -0
- data/lib/coinbase/transaction.rb +125 -0
- data/lib/coinbase/transfer.rb +22 -55
- data/lib/coinbase/wallet.rb +14 -3
- data/lib/coinbase.rb +11 -11
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c52613ebb145609813f96508c0eff76721ee6afebf3f3207394dad4c91b51635
|
4
|
+
data.tar.gz: d7f86c6cfbc02b6dd8866717cc9a89439b81da9ae8838dc34855dd10bf9f3fa9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6fa544e18af4ad42457ec8615e7a6e652fb15e1ae00cfa14924dcb86c53aab1ba90b21a8e1b7b29f193b1e0039d030cba1f45631b8dac23b287617105b88478b
|
7
|
+
data.tar.gz: 3625e897b9681e208cd921e8118275bd012996c17fb62fc235eac8624e6742ce18cff8d8177a1d379bfb5fa71ebec3db02a70d2bb683aeb067ccac7f89345945
|
data/lib/coinbase/address.rb
CHANGED
@@ -77,20 +77,43 @@ module Coinbase
|
|
77
77
|
# @param asset_id [Symbol] The ID of the Asset to send. For Ether, :eth, :gwei, and :wei are supported.
|
78
78
|
# @param destination [Wallet | Address | String] The destination of the transfer. If a Wallet, sends to the Wallet's
|
79
79
|
# default address. If a String, interprets it as the address ID.
|
80
|
-
# @return [
|
80
|
+
# @return [Coinbase::Transfer] The Transfer object.
|
81
81
|
def transfer(amount, asset_id, destination)
|
82
|
+
asset = Asset.fetch(network_id, asset_id)
|
83
|
+
|
82
84
|
destination_address, destination_network = destination_address_and_network(destination)
|
83
85
|
|
84
|
-
validate_can_transfer!(amount,
|
86
|
+
validate_can_transfer!(amount, asset, destination_network)
|
85
87
|
|
86
|
-
transfer = create_transfer(amount,
|
88
|
+
transfer = create_transfer(amount, asset, destination_address)
|
87
89
|
|
88
90
|
# If a server signer is managing keys, it will sign and broadcast the underlying transfer transaction out of band.
|
89
91
|
return transfer if Coinbase.use_server_signer?
|
90
92
|
|
91
|
-
|
93
|
+
broadcast_transfer(transfer, transfer.transaction.sign(@key))
|
94
|
+
end
|
95
|
+
|
96
|
+
# Trades the given amount of the given Asset for another Asset.
|
97
|
+
# Only same-network Trades are supported.
|
98
|
+
# @param amount [Integer, Float, BigDecimal] The amount of the Asset to send.
|
99
|
+
# @param from_asset_id [Symbol] The ID of the Asset to trade from. For Ether, :eth, :gwei, and :wei are supported.
|
100
|
+
# @param to_asset_id [Symbol] The ID of the Asset to trade to. For Ether, :eth, :gwei, and :wei are supported.
|
101
|
+
# @return [Coinbase::Trade] The Trade object.
|
102
|
+
def trade(amount, from_asset_id, to_asset_id)
|
103
|
+
from_asset = Asset.fetch(network_id, from_asset_id)
|
104
|
+
to_asset = Asset.fetch(network_id, to_asset_id)
|
105
|
+
|
106
|
+
validate_can_trade!(amount, from_asset)
|
107
|
+
|
108
|
+
trade = create_trade(amount, from_asset, to_asset)
|
109
|
+
|
110
|
+
# NOTE: Trading does not yet support server signers at this point.
|
111
|
+
|
112
|
+
payloads = { signed_payload: trade.transaction.sign(@key) }
|
113
|
+
|
114
|
+
payloads[:approve_tx_signed_payload] = trade.approve_transaction.sign(@key) unless trade.approve_transaction.nil?
|
92
115
|
|
93
|
-
|
116
|
+
broadcast_trade(trade, **payloads)
|
94
117
|
end
|
95
118
|
|
96
119
|
# Returns whether the Address has a private key backing it to sign transactions.
|
@@ -163,6 +186,10 @@ module Coinbase
|
|
163
186
|
@transfers_api ||= Coinbase::Client::TransfersApi.new(Coinbase.configuration.api_client)
|
164
187
|
end
|
165
188
|
|
189
|
+
def trades_api
|
190
|
+
@trades_api ||= Coinbase::Client::TradesApi.new(Coinbase.configuration.api_client)
|
191
|
+
end
|
192
|
+
|
166
193
|
def destination_address_and_network(destination)
|
167
194
|
return [destination.default_address.id, destination.network_id] if destination.is_a?(Wallet)
|
168
195
|
return [destination.id, destination.network_id] if destination.is_a?(Address)
|
@@ -170,25 +197,23 @@ module Coinbase
|
|
170
197
|
[destination, network_id]
|
171
198
|
end
|
172
199
|
|
173
|
-
def validate_can_transfer!(amount,
|
200
|
+
def validate_can_transfer!(amount, asset, destination_network_id)
|
174
201
|
raise 'Cannot transfer from address without private key loaded' unless can_sign? || Coinbase.use_server_signer?
|
175
202
|
|
176
|
-
raise ArgumentError, "Unsupported asset: #{asset_id}" unless Coinbase::Asset.supported?(asset_id)
|
177
|
-
|
178
203
|
raise ArgumentError, 'Transfer must be on the same Network' unless destination_network_id == network_id
|
179
204
|
|
180
|
-
current_balance = balance(asset_id)
|
205
|
+
current_balance = balance(asset.asset_id)
|
181
206
|
|
182
207
|
return unless current_balance < amount
|
183
208
|
|
184
209
|
raise ArgumentError, "Insufficient funds: #{amount} requested, but only #{current_balance} available"
|
185
210
|
end
|
186
211
|
|
187
|
-
def create_transfer(amount,
|
212
|
+
def create_transfer(amount, asset, destination)
|
188
213
|
create_transfer_request = {
|
189
|
-
amount:
|
214
|
+
amount: asset.to_atomic_amount(amount).to_i.to_s,
|
190
215
|
network_id: network_id,
|
191
|
-
asset_id:
|
216
|
+
asset_id: asset.primary_denomination.to_s,
|
192
217
|
destination: destination
|
193
218
|
}
|
194
219
|
|
@@ -199,13 +224,6 @@ module Coinbase
|
|
199
224
|
Coinbase::Transfer.new(transfer_model)
|
200
225
|
end
|
201
226
|
|
202
|
-
def sign_transfer(transfer)
|
203
|
-
transaction = transfer.transaction
|
204
|
-
transaction.sign(@key)
|
205
|
-
|
206
|
-
transaction.hex
|
207
|
-
end
|
208
|
-
|
209
227
|
def broadcast_transfer(transfer, signed_payload)
|
210
228
|
transfer_model = Coinbase.call_api do
|
211
229
|
transfers_api.broadcast_transfer(wallet_id, id, transfer.id, { signed_payload: signed_payload })
|
@@ -213,5 +231,41 @@ module Coinbase
|
|
213
231
|
|
214
232
|
Coinbase::Transfer.new(transfer_model)
|
215
233
|
end
|
234
|
+
|
235
|
+
def validate_can_trade!(amount, from_asset)
|
236
|
+
raise 'Cannot trade from address without private key loaded' unless can_sign?
|
237
|
+
|
238
|
+
current_balance = balance(from_asset.asset_id)
|
239
|
+
|
240
|
+
return unless current_balance < amount
|
241
|
+
|
242
|
+
raise ArgumentError, "Insufficient funds: #{amount} requested, but only #{current_balance} available"
|
243
|
+
end
|
244
|
+
|
245
|
+
def create_trade(amount, from_asset, to_asset)
|
246
|
+
create_trade_request = {
|
247
|
+
amount: from_asset.to_atomic_amount(amount).to_i.to_s,
|
248
|
+
from_asset_id: from_asset.primary_denomination.to_s,
|
249
|
+
to_asset_id: to_asset.primary_denomination.to_s
|
250
|
+
}
|
251
|
+
|
252
|
+
trade_model = Coinbase.call_api do
|
253
|
+
trades_api.create_trade(wallet_id, id, create_trade_request)
|
254
|
+
end
|
255
|
+
|
256
|
+
Coinbase::Trade.new(trade_model)
|
257
|
+
end
|
258
|
+
|
259
|
+
def broadcast_trade(trade, signed_payload:, approve_tx_signed_payload: nil)
|
260
|
+
req = { signed_payload: signed_payload }
|
261
|
+
|
262
|
+
req[:approve_transaction_signed_payload] = approve_tx_signed_payload unless approve_tx_signed_payload.nil?
|
263
|
+
|
264
|
+
trade_model = Coinbase.call_api do
|
265
|
+
trades_api.broadcast_trade(wallet_id, id, trade.id, req)
|
266
|
+
end
|
267
|
+
|
268
|
+
Coinbase::Trade.new(trade_model)
|
269
|
+
end
|
216
270
|
end
|
217
271
|
end
|
data/lib/coinbase/asset.rb
CHANGED
@@ -3,84 +3,108 @@
|
|
3
3
|
module Coinbase
|
4
4
|
# A representation of an Asset.
|
5
5
|
class Asset
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
class << self
|
7
|
+
# Returns the primary denomination for the provided Asset ID.
|
8
|
+
# For assets with multiple denominations, e.g. eth can also be denominated in wei and gwei,
|
9
|
+
# this method will return the primary denomination.
|
10
|
+
# e.g. eth.
|
11
|
+
# @param asset_id [Symbol] The Asset ID
|
12
|
+
# @return [Symbol] The primary denomination for the Asset ID
|
13
|
+
def primary_denomination(asset_id)
|
14
|
+
return :eth if %i[wei gwei].include?(asset_id)
|
12
15
|
|
13
|
-
|
14
|
-
# @param amount [Integer, Float, BigDecimal] The amount to normalize
|
15
|
-
# @param asset_id [Symbol] The ID of the Asset being transferred
|
16
|
-
# @return [BigDecimal] The normalized amount in atomic units
|
17
|
-
def self.to_atomic_amount(amount, asset_id)
|
18
|
-
case asset_id
|
19
|
-
when :eth
|
20
|
-
amount * BigDecimal(Coinbase::WEI_PER_ETHER.to_s)
|
21
|
-
when :gwei
|
22
|
-
amount * BigDecimal(Coinbase::WEI_PER_GWEI.to_s)
|
23
|
-
when :usdc
|
24
|
-
amount * BigDecimal(Coinbase::ATOMIC_UNITS_PER_USDC.to_s)
|
25
|
-
when :weth
|
26
|
-
amount * BigDecimal(Coinbase::WEI_PER_ETHER)
|
27
|
-
else
|
28
|
-
amount
|
16
|
+
asset_id
|
29
17
|
end
|
30
|
-
end
|
31
18
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
19
|
+
def from_model(asset_model, asset_id: nil)
|
20
|
+
raise unless asset_model.is_a?(Coinbase::Client::Asset)
|
21
|
+
|
22
|
+
decimals = asset_model.decimals
|
23
|
+
|
24
|
+
# Handle the non-primary denomination case at the asset level.
|
25
|
+
# TODO: Push this logic down to the backend.
|
26
|
+
if asset_id && asset_id != Coinbase.to_sym(asset_model.asset_id)
|
27
|
+
case asset_id
|
28
|
+
when :gwei
|
29
|
+
decimals = GWEI_DECIMALS
|
30
|
+
when :wei
|
31
|
+
decimals = 0
|
32
|
+
else
|
33
|
+
raise ArgumentError, "Unsupported asset ID: #{asset_id}"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
new(
|
38
|
+
network_id: Coinbase.to_sym(asset_model.network_id),
|
39
|
+
asset_id: asset_id || Coinbase.to_sym(asset_model.asset_id),
|
40
|
+
address_id: asset_model.contract_address,
|
41
|
+
decimals: decimals
|
42
|
+
)
|
49
43
|
end
|
50
|
-
end
|
51
44
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
45
|
+
# Fetches the Asset with the provided Asset ID.
|
46
|
+
# @param asset_id [Symbol] The Asset ID
|
47
|
+
# @return [Coinbase::Asset] The Asset
|
48
|
+
def fetch(network_id, asset_id)
|
49
|
+
asset_model = Coinbase.call_api do
|
50
|
+
assets_api.get_asset(
|
51
|
+
Coinbase.normalize_network(network_id),
|
52
|
+
primary_denomination(asset_id).to_s
|
53
|
+
)
|
54
|
+
end
|
60
55
|
|
61
|
-
|
56
|
+
from_model(asset_model, asset_id: asset_id)
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def assets_api
|
62
|
+
Coinbase::Client::AssetsApi.new(Coinbase.configuration.api_client)
|
63
|
+
end
|
62
64
|
end
|
63
65
|
|
64
66
|
# Returns a new Asset object. Do not use this method. Instead, use the Asset constants defined in
|
65
67
|
# the Coinbase module.
|
66
68
|
# @param network_id [Symbol] The ID of the Network to which the Asset belongs
|
67
69
|
# @param asset_id [Symbol] The Asset ID
|
68
|
-
# @param display_name [String] The Asset's display name
|
69
70
|
# @param address_id [String] (Optional) The Asset's address ID, if one exists
|
70
|
-
|
71
|
+
# @param decimals [Integer] (Optional) The number of decimal places the Asset uses
|
72
|
+
def initialize(network_id:, asset_id:, decimals:, address_id: nil)
|
71
73
|
@network_id = network_id
|
72
74
|
@asset_id = asset_id
|
73
|
-
@display_name = display_name
|
74
75
|
@address_id = address_id
|
76
|
+
@decimals = decimals
|
75
77
|
end
|
76
78
|
|
77
|
-
attr_reader :network_id, :asset_id, :
|
79
|
+
attr_reader :network_id, :asset_id, :address_id, :decimals
|
80
|
+
|
81
|
+
# Converts the amount of the Asset from atomic to whole units.
|
82
|
+
# @param atomic_amount [Integer, Float, BigDecimal] The atomic amount to convert to whole units.
|
83
|
+
# @return [BigDecimal] The amount in whole units
|
84
|
+
def from_atomic_amount(atomic_amount)
|
85
|
+
BigDecimal(atomic_amount) / BigDecimal(10).power(decimals)
|
86
|
+
end
|
87
|
+
|
88
|
+
# Converts the amount of the Asset from whole to atomic units.
|
89
|
+
# @param whole_amount [Integer, Float, BigDecimal] The whole amount to convert to atomic units.
|
90
|
+
# @return [BigDecimal] The amount in atomic units
|
91
|
+
def to_atomic_amount(whole_amount)
|
92
|
+
whole_amount * BigDecimal(10).power(decimals)
|
93
|
+
end
|
94
|
+
|
95
|
+
# Returns the primary denomination for the Asset.
|
96
|
+
# For `gwei` and `wei` the primary denomination is `eth`.
|
97
|
+
# For all other assets, the primary denomination is the same asset ID.
|
98
|
+
# @return [Symbol] The primary denomination for the Asset
|
99
|
+
def primary_denomination
|
100
|
+
self.class.primary_denomination(asset_id)
|
101
|
+
end
|
78
102
|
|
79
103
|
# Returns a string representation of the Asset.
|
80
104
|
# @return [String] a string representation of the Asset
|
81
105
|
def to_s
|
82
|
-
"Coinbase::Asset{network_id: '#{network_id}', asset_id: '#{asset_id}',
|
83
|
-
|
106
|
+
"Coinbase::Asset{network_id: '#{network_id}', asset_id: '#{asset_id}', decimals: '#{decimals}'" \
|
107
|
+
"#{address_id.nil? ? '' : ", address_id: '#{address_id}'"}}"
|
84
108
|
end
|
85
109
|
|
86
110
|
# Same as to_s.
|
data/lib/coinbase/balance.rb
CHANGED
@@ -7,9 +7,9 @@ module Coinbase
|
|
7
7
|
# @param balance_model [Coinbase::Client::Balance] The balance fetched from the API.
|
8
8
|
# @return [Balance] The converted Balance object.
|
9
9
|
def self.from_model(balance_model)
|
10
|
-
|
10
|
+
asset = Coinbase::Asset.from_model(balance_model.asset)
|
11
11
|
|
12
|
-
|
12
|
+
new(amount: asset.from_atomic_amount(balance_model.amount), asset: asset)
|
13
13
|
end
|
14
14
|
|
15
15
|
# Converts a Coinbase::Client::Balance model and asset ID to a Coinbase::Balance
|
@@ -19,8 +19,11 @@ module Coinbase
|
|
19
19
|
# @param asset_id [Symbol] The Asset ID of the denomination we want returned.
|
20
20
|
# @return [Balance] The converted Balance object.
|
21
21
|
def self.from_model_and_asset_id(balance_model, asset_id)
|
22
|
+
asset = Coinbase::Asset.from_model(balance_model.asset, asset_id: asset_id)
|
23
|
+
|
22
24
|
new(
|
23
|
-
amount:
|
25
|
+
amount: asset.from_atomic_amount(balance_model.amount),
|
26
|
+
asset: asset,
|
24
27
|
asset_id: asset_id
|
25
28
|
)
|
26
29
|
end
|
@@ -29,12 +32,13 @@ module Coinbase
|
|
29
32
|
# Balance.from_model_and_asset_id.
|
30
33
|
# @param amount [BigDecimal] The amount of the Asset
|
31
34
|
# @param asset_id [Symbol] The Asset ID
|
32
|
-
def initialize(amount:, asset_id:)
|
35
|
+
def initialize(amount:, asset:, asset_id: nil)
|
33
36
|
@amount = amount
|
34
|
-
@
|
37
|
+
@asset = asset
|
38
|
+
@asset_id = asset_id || asset.asset_id
|
35
39
|
end
|
36
40
|
|
37
|
-
attr_reader :amount, :asset_id
|
41
|
+
attr_reader :amount, :asset, :asset_id
|
38
42
|
|
39
43
|
# Returns a string representation of the Balance.
|
40
44
|
# @return [String] a string representation of the Balance
|
@@ -0,0 +1,91 @@
|
|
1
|
+
=begin
|
2
|
+
#Coinbase Platform API
|
3
|
+
|
4
|
+
#This is the OpenAPI 3.0 specification for the Coinbase Platform APIs, used in conjunction with the Coinbase Platform SDKs.
|
5
|
+
|
6
|
+
The version of the OpenAPI document: 0.0.1-alpha
|
7
|
+
Contact: yuga.cohler@coinbase.com
|
8
|
+
Generated by: https://openapi-generator.tech
|
9
|
+
Generator version: 7.5.0
|
10
|
+
|
11
|
+
=end
|
12
|
+
|
13
|
+
require 'cgi'
|
14
|
+
|
15
|
+
module Coinbase::Client
|
16
|
+
class AssetsApi
|
17
|
+
attr_accessor :api_client
|
18
|
+
|
19
|
+
def initialize(api_client = ApiClient.default)
|
20
|
+
@api_client = api_client
|
21
|
+
end
|
22
|
+
# Get the asset for the specified asset ID.
|
23
|
+
# Get the asset for the specified asset ID.
|
24
|
+
# @param network_id [String] The ID of the blockchain network
|
25
|
+
# @param asset_id [String] The ID of the asset to fetch
|
26
|
+
# @param [Hash] opts the optional parameters
|
27
|
+
# @return [Asset]
|
28
|
+
def get_asset(network_id, asset_id, opts = {})
|
29
|
+
data, _status_code, _headers = get_asset_with_http_info(network_id, asset_id, opts)
|
30
|
+
data
|
31
|
+
end
|
32
|
+
|
33
|
+
# Get the asset for the specified asset ID.
|
34
|
+
# Get the asset for the specified asset ID.
|
35
|
+
# @param network_id [String] The ID of the blockchain network
|
36
|
+
# @param asset_id [String] The ID of the asset to fetch
|
37
|
+
# @param [Hash] opts the optional parameters
|
38
|
+
# @return [Array<(Asset, Integer, Hash)>] Asset data, response status code and response headers
|
39
|
+
def get_asset_with_http_info(network_id, asset_id, opts = {})
|
40
|
+
if @api_client.config.debugging
|
41
|
+
@api_client.config.logger.debug 'Calling API: AssetsApi.get_asset ...'
|
42
|
+
end
|
43
|
+
# verify the required parameter 'network_id' is set
|
44
|
+
if @api_client.config.client_side_validation && network_id.nil?
|
45
|
+
fail ArgumentError, "Missing the required parameter 'network_id' when calling AssetsApi.get_asset"
|
46
|
+
end
|
47
|
+
# verify the required parameter 'asset_id' is set
|
48
|
+
if @api_client.config.client_side_validation && asset_id.nil?
|
49
|
+
fail ArgumentError, "Missing the required parameter 'asset_id' when calling AssetsApi.get_asset"
|
50
|
+
end
|
51
|
+
# resource path
|
52
|
+
local_var_path = '/v1/networks/{network_id}/assets/{asset_id}'.sub('{' + 'network_id' + '}', CGI.escape(network_id.to_s)).sub('{' + 'asset_id' + '}', CGI.escape(asset_id.to_s))
|
53
|
+
|
54
|
+
# query parameters
|
55
|
+
query_params = opts[:query_params] || {}
|
56
|
+
|
57
|
+
# header parameters
|
58
|
+
header_params = opts[:header_params] || {}
|
59
|
+
# HTTP header 'Accept' (if needed)
|
60
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json'])
|
61
|
+
|
62
|
+
# form parameters
|
63
|
+
form_params = opts[:form_params] || {}
|
64
|
+
|
65
|
+
# http body (model)
|
66
|
+
post_body = opts[:debug_body]
|
67
|
+
|
68
|
+
# return_type
|
69
|
+
return_type = opts[:debug_return_type] || 'Asset'
|
70
|
+
|
71
|
+
# auth_names
|
72
|
+
auth_names = opts[:debug_auth_names] || []
|
73
|
+
|
74
|
+
new_options = opts.merge(
|
75
|
+
:operation => :"AssetsApi.get_asset",
|
76
|
+
:header_params => header_params,
|
77
|
+
:query_params => query_params,
|
78
|
+
:form_params => form_params,
|
79
|
+
:body => post_body,
|
80
|
+
:auth_names => auth_names,
|
81
|
+
:return_type => return_type
|
82
|
+
)
|
83
|
+
|
84
|
+
data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
|
85
|
+
if @api_client.config.debugging
|
86
|
+
@api_client.config.logger.debug "API called: AssetsApi#get_asset\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
87
|
+
end
|
88
|
+
return data, status_code, headers
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
=begin
|
2
|
+
#Coinbase Platform API
|
3
|
+
|
4
|
+
#This is the OpenAPI 3.0 specification for the Coinbase Platform APIs, used in conjunction with the Coinbase Platform SDKs.
|
5
|
+
|
6
|
+
The version of the OpenAPI document: 0.0.1-alpha
|
7
|
+
Contact: yuga.cohler@coinbase.com
|
8
|
+
Generated by: https://openapi-generator.tech
|
9
|
+
Generator version: 7.5.0
|
10
|
+
|
11
|
+
=end
|
12
|
+
|
13
|
+
require 'cgi'
|
14
|
+
|
15
|
+
module Coinbase::Client
|
16
|
+
class BalancesApi
|
17
|
+
attr_accessor :api_client
|
18
|
+
|
19
|
+
def initialize(api_client = ApiClient.default)
|
20
|
+
@api_client = api_client
|
21
|
+
end
|
22
|
+
# Get the balance of an asset in an external address
|
23
|
+
# Get the balance of an asset in an external address
|
24
|
+
# @param network_id [String] The ID of the blockchain network
|
25
|
+
# @param address_id [String] The ID of the address to fetch the balance for
|
26
|
+
# @param asset_id [String] The ID of the asset to fetch the balance for
|
27
|
+
# @param [Hash] opts the optional parameters
|
28
|
+
# @return [Balance]
|
29
|
+
def get_external_address_balance(network_id, address_id, asset_id, opts = {})
|
30
|
+
data, _status_code, _headers = get_external_address_balance_with_http_info(network_id, address_id, asset_id, opts)
|
31
|
+
data
|
32
|
+
end
|
33
|
+
|
34
|
+
# Get the balance of an asset in an external address
|
35
|
+
# Get the balance of an asset in an external address
|
36
|
+
# @param network_id [String] The ID of the blockchain network
|
37
|
+
# @param address_id [String] The ID of the address to fetch the balance for
|
38
|
+
# @param asset_id [String] The ID of the asset to fetch the balance for
|
39
|
+
# @param [Hash] opts the optional parameters
|
40
|
+
# @return [Array<(Balance, Integer, Hash)>] Balance data, response status code and response headers
|
41
|
+
def get_external_address_balance_with_http_info(network_id, address_id, asset_id, opts = {})
|
42
|
+
if @api_client.config.debugging
|
43
|
+
@api_client.config.logger.debug 'Calling API: BalancesApi.get_external_address_balance ...'
|
44
|
+
end
|
45
|
+
# verify the required parameter 'network_id' is set
|
46
|
+
if @api_client.config.client_side_validation && network_id.nil?
|
47
|
+
fail ArgumentError, "Missing the required parameter 'network_id' when calling BalancesApi.get_external_address_balance"
|
48
|
+
end
|
49
|
+
# verify the required parameter 'address_id' is set
|
50
|
+
if @api_client.config.client_side_validation && address_id.nil?
|
51
|
+
fail ArgumentError, "Missing the required parameter 'address_id' when calling BalancesApi.get_external_address_balance"
|
52
|
+
end
|
53
|
+
# verify the required parameter 'asset_id' is set
|
54
|
+
if @api_client.config.client_side_validation && asset_id.nil?
|
55
|
+
fail ArgumentError, "Missing the required parameter 'asset_id' when calling BalancesApi.get_external_address_balance"
|
56
|
+
end
|
57
|
+
# resource path
|
58
|
+
local_var_path = '/v1/networks/{network_id}/addresses/{address_id}/balances/{asset_id}'.sub('{' + 'network_id' + '}', CGI.escape(network_id.to_s)).sub('{' + 'address_id' + '}', CGI.escape(address_id.to_s)).sub('{' + 'asset_id' + '}', CGI.escape(asset_id.to_s))
|
59
|
+
|
60
|
+
# query parameters
|
61
|
+
query_params = opts[:query_params] || {}
|
62
|
+
|
63
|
+
# header parameters
|
64
|
+
header_params = opts[:header_params] || {}
|
65
|
+
# HTTP header 'Accept' (if needed)
|
66
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json'])
|
67
|
+
|
68
|
+
# form parameters
|
69
|
+
form_params = opts[:form_params] || {}
|
70
|
+
|
71
|
+
# http body (model)
|
72
|
+
post_body = opts[:debug_body]
|
73
|
+
|
74
|
+
# return_type
|
75
|
+
return_type = opts[:debug_return_type] || 'Balance'
|
76
|
+
|
77
|
+
# auth_names
|
78
|
+
auth_names = opts[:debug_auth_names] || []
|
79
|
+
|
80
|
+
new_options = opts.merge(
|
81
|
+
:operation => :"BalancesApi.get_external_address_balance",
|
82
|
+
:header_params => header_params,
|
83
|
+
:query_params => query_params,
|
84
|
+
:form_params => form_params,
|
85
|
+
:body => post_body,
|
86
|
+
:auth_names => auth_names,
|
87
|
+
:return_type => return_type
|
88
|
+
)
|
89
|
+
|
90
|
+
data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
|
91
|
+
if @api_client.config.debugging
|
92
|
+
@api_client.config.logger.debug "API called: BalancesApi#get_external_address_balance\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
93
|
+
end
|
94
|
+
return data, status_code, headers
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|