From 7abcd0a3c21b8456c105fa1b0bb75e075802c8e0 Mon Sep 17 00:00:00 2001 From: cb-howardatcb <86798563+howard-at-cb@users.noreply.github.com> Date: Tue, 10 Sep 2024 10:19:30 -0700 Subject: [PATCH] update latest ruby client (#182) ### What changed? Why? follow up change to this PR https://github.com/coinbase/coinbase-sdk-ruby/pull/181 #### Qualified Impact --- lib/coinbase/address.rb | 6 +- lib/coinbase/client.rb | 3 + .../client/api/balance_history_api.rb | 107 ++++++++++++++++++ .../client/api/external_addresses_api.rb | 85 -------------- .../shared_examples/address_balances.rb | 4 +- 5 files changed, 118 insertions(+), 87 deletions(-) create mode 100644 lib/coinbase/client/api/balance_history_api.rb diff --git a/lib/coinbase/address.rb b/lib/coinbase/address.rb index 11f62472..b1084f1c 100644 --- a/lib/coinbase/address.rb +++ b/lib/coinbase/address.rb @@ -248,12 +248,16 @@ def addresses_api @addresses_api ||= Coinbase::Client::ExternalAddressesApi.new(Coinbase.configuration.api_client) end + def balance_history_api + @balance_history_api ||= Coinbase::Client::BalanceHistoryApi.new(Coinbase.configuration.api_client) + end + def stake_api @stake_api ||= Coinbase::Client::StakeApi.new(Coinbase.configuration.api_client) end def list_page(asset_id, page) - addresses_api.list_address_historical_balance( + balance_history_api.list_address_historical_balance( network.normalized_id, id, Coinbase::Asset.primary_denomination(asset_id).to_s, diff --git a/lib/coinbase/client.rb b/lib/coinbase/client.rb index 663577aa..063aa994 100644 --- a/lib/coinbase/client.rb +++ b/lib/coinbase/client.rb @@ -43,6 +43,8 @@ Coinbase::Client.autoload :CreateWalletRequest, 'coinbase/client/models/create_wallet_request' Coinbase::Client.autoload :CreateWalletRequestWallet, 'coinbase/client/models/create_wallet_request_wallet' Coinbase::Client.autoload :CreateWebhookRequest, 'coinbase/client/models/create_webhook_request' +Coinbase::Client.autoload :ERC20TransferEvent, 'coinbase/client/models/erc20_transfer_event' +Coinbase::Client.autoload :ERC721TransferEvent, 'coinbase/client/models/erc721_transfer_event' Coinbase::Client.autoload :Error, 'coinbase/client/models/error' Coinbase::Client.autoload :EthereumTransaction, 'coinbase/client/models/ethereum_transaction' Coinbase::Client.autoload :EthereumTransactionAccess, 'coinbase/client/models/ethereum_transaction_access' @@ -102,6 +104,7 @@ # APIs Coinbase::Client.autoload :AddressesApi, 'coinbase/client/api/addresses_api' Coinbase::Client.autoload :AssetsApi, 'coinbase/client/api/assets_api' +Coinbase::Client.autoload :BalanceHistoryApi, 'coinbase/client/api/balance_history_api' Coinbase::Client.autoload :ContractEventsApi, 'coinbase/client/api/contract_events_api' Coinbase::Client.autoload :ContractInvocationsApi, 'coinbase/client/api/contract_invocations_api' Coinbase::Client.autoload :ExternalAddressesApi, 'coinbase/client/api/external_addresses_api' diff --git a/lib/coinbase/client/api/balance_history_api.rb b/lib/coinbase/client/api/balance_history_api.rb new file mode 100644 index 00000000..fc9fcb55 --- /dev/null +++ b/lib/coinbase/client/api/balance_history_api.rb @@ -0,0 +1,107 @@ +=begin +#Coinbase Platform API + +#This is the OpenAPI 3.0 specification for the Coinbase Platform APIs, used in conjunction with the Coinbase Platform SDKs. + +The version of the OpenAPI document: 0.0.1-alpha + +Generated by: https://openapi-generator.tech +Generator version: 7.7.0 + +=end + +require 'cgi' + +module Coinbase::Client + class BalanceHistoryApi + attr_accessor :api_client + + def initialize(api_client = ApiClient.default) + @api_client = api_client + end + # Get address balance history for asset + # List the historical balance of an asset in a specific address. + # @param network_id [String] The ID of the blockchain network + # @param address_id [String] The ID of the address to fetch the historical balance for. + # @param asset_id [String] The symbol of the asset to fetch the historical balance for. + # @param [Hash] opts the optional parameters + # @option opts [Integer] :limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + # @option opts [String] :page A cursor for pagination across multiple pages of results. Don't include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + # @return [AddressHistoricalBalanceList] + def list_address_historical_balance(network_id, address_id, asset_id, opts = {}) + data, _status_code, _headers = list_address_historical_balance_with_http_info(network_id, address_id, asset_id, opts) + data + end + + # Get address balance history for asset + # List the historical balance of an asset in a specific address. + # @param network_id [String] The ID of the blockchain network + # @param address_id [String] The ID of the address to fetch the historical balance for. + # @param asset_id [String] The symbol of the asset to fetch the historical balance for. + # @param [Hash] opts the optional parameters + # @option opts [Integer] :limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. + # @option opts [String] :page A cursor for pagination across multiple pages of results. Don't include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. + # @return [Array<(AddressHistoricalBalanceList, Integer, Hash)>] AddressHistoricalBalanceList data, response status code and response headers + def list_address_historical_balance_with_http_info(network_id, address_id, asset_id, opts = {}) + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: BalanceHistoryApi.list_address_historical_balance ...' + end + # verify the required parameter 'network_id' is set + if @api_client.config.client_side_validation && network_id.nil? + fail ArgumentError, "Missing the required parameter 'network_id' when calling BalanceHistoryApi.list_address_historical_balance" + end + # verify the required parameter 'address_id' is set + if @api_client.config.client_side_validation && address_id.nil? + fail ArgumentError, "Missing the required parameter 'address_id' when calling BalanceHistoryApi.list_address_historical_balance" + end + # verify the required parameter 'asset_id' is set + if @api_client.config.client_side_validation && asset_id.nil? + fail ArgumentError, "Missing the required parameter 'asset_id' when calling BalanceHistoryApi.list_address_historical_balance" + end + if @api_client.config.client_side_validation && !opts[:'page'].nil? && opts[:'page'].to_s.length > 5000 + fail ArgumentError, 'invalid value for "opts[:"page"]" when calling BalanceHistoryApi.list_address_historical_balance, the character length must be smaller than or equal to 5000.' + end + + # resource path + local_var_path = '/v1/networks/{network_id}/addresses/{address_id}/balance_history/{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)) + + # query parameters + query_params = opts[:query_params] || {} + query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil? + query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil? + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'AddressHistoricalBalanceList' + + # auth_names + auth_names = opts[:debug_auth_names] || [] + + new_options = opts.merge( + :operation => :"BalanceHistoryApi.list_address_historical_balance", + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type + ) + + data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: BalanceHistoryApi#list_address_historical_balance\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + end +end diff --git a/lib/coinbase/client/api/external_addresses_api.rb b/lib/coinbase/client/api/external_addresses_api.rb index a30cd019..90c7b300 100644 --- a/lib/coinbase/client/api/external_addresses_api.rb +++ b/lib/coinbase/client/api/external_addresses_api.rb @@ -94,91 +94,6 @@ def get_external_address_balance_with_http_info(network_id, address_id, asset_id return data, status_code, headers end - # Get address balance history for asset - # List the historical balance of an asset in a specific address. - # @param network_id [String] The ID of the blockchain network - # @param address_id [String] The ID of the address to fetch the historical balance for. - # @param asset_id [String] The symbol of the asset to fetch the historical balance for. - # @param [Hash] opts the optional parameters - # @option opts [Integer] :limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. - # @option opts [String] :page A cursor for pagination across multiple pages of results. Don't include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. - # @return [AddressHistoricalBalanceList] - def list_address_historical_balance(network_id, address_id, asset_id, opts = {}) - data, _status_code, _headers = list_address_historical_balance_with_http_info(network_id, address_id, asset_id, opts) - data - end - - # Get address balance history for asset - # List the historical balance of an asset in a specific address. - # @param network_id [String] The ID of the blockchain network - # @param address_id [String] The ID of the address to fetch the historical balance for. - # @param asset_id [String] The symbol of the asset to fetch the historical balance for. - # @param [Hash] opts the optional parameters - # @option opts [Integer] :limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10. - # @option opts [String] :page A cursor for pagination across multiple pages of results. Don't include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results. - # @return [Array<(AddressHistoricalBalanceList, Integer, Hash)>] AddressHistoricalBalanceList data, response status code and response headers - def list_address_historical_balance_with_http_info(network_id, address_id, asset_id, opts = {}) - if @api_client.config.debugging - @api_client.config.logger.debug 'Calling API: ExternalAddressesApi.list_address_historical_balance ...' - end - # verify the required parameter 'network_id' is set - if @api_client.config.client_side_validation && network_id.nil? - fail ArgumentError, "Missing the required parameter 'network_id' when calling ExternalAddressesApi.list_address_historical_balance" - end - # verify the required parameter 'address_id' is set - if @api_client.config.client_side_validation && address_id.nil? - fail ArgumentError, "Missing the required parameter 'address_id' when calling ExternalAddressesApi.list_address_historical_balance" - end - # verify the required parameter 'asset_id' is set - if @api_client.config.client_side_validation && asset_id.nil? - fail ArgumentError, "Missing the required parameter 'asset_id' when calling ExternalAddressesApi.list_address_historical_balance" - end - if @api_client.config.client_side_validation && !opts[:'page'].nil? && opts[:'page'].to_s.length > 5000 - fail ArgumentError, 'invalid value for "opts[:"page"]" when calling ExternalAddressesApi.list_address_historical_balance, the character length must be smaller than or equal to 5000.' - end - - # resource path - local_var_path = '/v1/networks/{network_id}/addresses/{address_id}/balance_history/{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)) - - # query parameters - query_params = opts[:query_params] || {} - query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil? - query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil? - - # header parameters - header_params = opts[:header_params] || {} - # HTTP header 'Accept' (if needed) - header_params['Accept'] = @api_client.select_header_accept(['application/json']) - - # form parameters - form_params = opts[:form_params] || {} - - # http body (model) - post_body = opts[:debug_body] - - # return_type - return_type = opts[:debug_return_type] || 'AddressHistoricalBalanceList' - - # auth_names - auth_names = opts[:debug_auth_names] || [] - - new_options = opts.merge( - :operation => :"ExternalAddressesApi.list_address_historical_balance", - :header_params => header_params, - :query_params => query_params, - :form_params => form_params, - :body => post_body, - :auth_names => auth_names, - :return_type => return_type - ) - - data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options) - if @api_client.config.debugging - @api_client.config.logger.debug "API called: ExternalAddressesApi#list_address_historical_balance\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" - end - return data, status_code, headers - end - # List transactions for an address. # List all transactions that interact with the address. # @param network_id [String] The ID of the blockchain network diff --git a/spec/support/shared_examples/address_balances.rb b/spec/support/shared_examples/address_balances.rb index 0ebd8087..f7ecd741 100644 --- a/spec/support/shared_examples/address_balances.rb +++ b/spec/support/shared_examples/address_balances.rb @@ -2,9 +2,11 @@ shared_examples 'an address that supports balance queries' do |_operation| let(:external_addresses_api) { instance_double(Coinbase::Client::ExternalAddressesApi) } + let(:balance_history_api) { instance_double(Coinbase::Client::BalanceHistoryApi) } before do allow(Coinbase::Client::ExternalAddressesApi).to receive(:new).and_return(external_addresses_api) + allow(Coinbase::Client::BalanceHistoryApi).to receive(:new).and_return(balance_history_api) end describe '#balances' do @@ -114,7 +116,7 @@ end before do - allow(external_addresses_api) + allow(balance_history_api) .to receive(:list_address_historical_balance) .with(normalized_network_id, address_id, primary_denomination, { limit: 100, page: nil }) .and_return(response)