coingecko_ruby 0.1.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +31 -0
- data/.gitignore +11 -0
- data/.travis.yml +6 -0
- data/CHANGELOG.md +66 -0
- data/Gemfile +16 -0
- data/Gemfile.lock +37 -0
- data/README.md +7 -5
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/coingecko_ruby.gemspec +5 -5
- data/fixtures/vcr_cassettes/test_that_it_gets_a_coins_complete_current_data.yml +74 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_a_coins_tickers.yml +99 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_a_derivative_exchange.yml +71 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_a_specific_exchange_ticker_from_an_exchange.yml +145 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_btc_to_eth_exchange_rate.yml +120 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_btc_to_usd_exchange_rate.yml +122 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_complete_data_for_an_exchange.yml +72 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_daily_historical_prices_for_one_coin.yml +120 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_derivative_exchanges.yml +79 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_derivatives.yml +1732 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_derivatives_exchanges_ids_and_names.yml +95 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_event_countries.yml +76 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_event_types.yml +71 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_exchange_ids_supported_by_coingecko.yml +159 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_exchange_tickers_from_an_exchange.yml +78 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_finance_platforms.yml +95 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_finance_products.yml +100 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_global_crypto_data.yml +71 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_global_defi_data.yml +71 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_historical_price_for_one_coin_at_a_previous_date.yml +173 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_hourly_historical_prices_for_one_coin.yml +120 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_indexes.yml +127 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_indexes_by_market_id_and_coin_id.yml +66 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_indexes_by_market_id_and_index_id.yml +71 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_indexes_ids.yml +630 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_last_7_days_exchange_volume_from_an_exchange.yml +120 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_market_data_for_a_coin.yml +169 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_market_data_for_a_coin_in_myr.yml +120 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_market_data_for_multiple_coins_in_eth.yml +120 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_minutely_historical_prices_for_one_coin.yml +188 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_ohlc_data_for_one_coin_in_the_last_30_days_in_myr.yml +120 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_ohlc_data_for_one_coin_in_the_last_7_days.yml +120 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_price_for_multiple_coins.yml +71 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_price_for_multiple_coins_in_different_currencies.yml +71 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_price_for_one_coin.yml +122 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_price_for_one_coin_in_a_different_currency.yml +120 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_simple_price_for_one_coin.yml +73 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_status_updates.yml +79 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_status_updates_for_an_exchange.yml +76 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_the_list_of_asset_platforms.yml +80 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_the_list_of_categories.yml +114 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_the_list_of_categories_with_market_data.yml +100 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_the_list_of_supported_coins.yml +143 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_the_list_of_supported_exchanges.yml +79 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_the_list_supported_coins.yml +74 -0
- data/fixtures/vcr_cassettes/test_that_it_gets_trending_searches.yml +77 -0
- data/lib/coingecko_ruby.rb +1 -1
- data/lib/coingecko_ruby/client.rb +20 -0
- data/lib/coingecko_ruby/client/categories.rb +85 -0
- data/lib/coingecko_ruby/client/coins.rb +213 -10
- data/lib/coingecko_ruby/client/derivatives.rb +154 -0
- data/lib/coingecko_ruby/client/events.rb +84 -0
- data/lib/coingecko_ruby/client/exchanges.rb +193 -0
- data/lib/coingecko_ruby/client/finance.rb +100 -0
- data/lib/coingecko_ruby/client/indexes.rb +88 -0
- data/lib/coingecko_ruby/client/infos.rb +174 -0
- data/lib/coingecko_ruby/client/prices.rb +302 -10
- data/lib/coingecko_ruby/client/status.rb +7 -1
- data/lib/coingecko_ruby/connection.rb +4 -6
- data/lib/coingecko_ruby/version.rb +1 -1
- metadata +63 -2
@@ -0,0 +1,154 @@
|
|
1
|
+
module CoingeckoRuby
|
2
|
+
class Client
|
3
|
+
module Derivatives
|
4
|
+
# Fetches the list of derivative products listed in CoinGecko.
|
5
|
+
#
|
6
|
+
# @option options [String] :include_tickers ('unexpired') determines whether to display all tickers or only show unexpired tickers. Valid values: all, unexpired
|
7
|
+
#
|
8
|
+
# @return [Array<Hash>] each derivative product's information.
|
9
|
+
#
|
10
|
+
# @example Get all unexpired derivatives.
|
11
|
+
# client.derivatives(include_tickers: 'unexpired')
|
12
|
+
# @example Sample response object (truncated)
|
13
|
+
# [
|
14
|
+
# {
|
15
|
+
# "market" => "Binance (Futures)",
|
16
|
+
# "symbol" => "BTCUSDT",
|
17
|
+
# "index_id" => "BTC",
|
18
|
+
# "price" => "44575.26",
|
19
|
+
# "price_percentage_change_24h" => -0.5892545887194689,
|
20
|
+
# "contract_type" => "perpetual",
|
21
|
+
# "index" => 44646.70155337,
|
22
|
+
# "basis" => -0.11242030301843862,
|
23
|
+
# "spread" => 0.01,
|
24
|
+
# "funding_rate" => 0.021205,
|
25
|
+
# "open_interest" => 1822639548.16,
|
26
|
+
# "volume_24h" => 27179643527.25483,
|
27
|
+
# "last_traded_at" => 1621341447,
|
28
|
+
# "expired_at" => nil
|
29
|
+
# },
|
30
|
+
# {
|
31
|
+
# "market" => "Bybit",
|
32
|
+
# "symbol" => "BTCUSD",
|
33
|
+
# "index_id" => "BTC",
|
34
|
+
# "price" => "44817.5",
|
35
|
+
# "price_percentage_change_24h" => -0.9426664309079656,
|
36
|
+
# "contract_type" => "perpetual",
|
37
|
+
# "index" => 44827.57,
|
38
|
+
# "basis" => 0.022468901656718915,
|
39
|
+
# "spread" => 0.01,
|
40
|
+
# "funding_rate" => 0.01,
|
41
|
+
# "open_interest" => 1664013731.0,
|
42
|
+
# "volume_24h" => 5725694670.15,
|
43
|
+
# "last_traded_at" => 1621340931,
|
44
|
+
# "expired_at" => nil
|
45
|
+
# },
|
46
|
+
# ]
|
47
|
+
def derivatives(**options)
|
48
|
+
get 'derivatives', options
|
49
|
+
end
|
50
|
+
|
51
|
+
# @deprecated Use {#derivatives} instead
|
52
|
+
def get_derivatives(options: {})
|
53
|
+
derivatives(**options)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Fetches the list of derivative exchanges listed in CoinGecko.
|
57
|
+
#
|
58
|
+
# @option options [Integer] :per_page sets the number of results to return per page.
|
59
|
+
# @option options [Integer] :page sets the page for results.
|
60
|
+
# @option options [String] :order sets the sort order for results. Valid values: name_asc, name_desc, open_interest_btc_asc, open_interest_btc_desc, trade_volume_24h_btc_asc, trade_volume_24h_btc_desc.
|
61
|
+
#
|
62
|
+
# @return [Array<Hash>] each derivative exchange's information.
|
63
|
+
#
|
64
|
+
# @example Get one derivative exchange.
|
65
|
+
# client.derivative_exchanges(per_page: 1)
|
66
|
+
# @example Sample response object
|
67
|
+
# [{
|
68
|
+
# "name" => "Binance (Futures)",
|
69
|
+
# "id" => "binance_futures",
|
70
|
+
# "open_interest_btc" => 237845.78,
|
71
|
+
# "trade_volume_24h_btc" => "2209372.18",
|
72
|
+
# "number_of_perpetual_pairs" => 132,
|
73
|
+
# "number_of_futures_pairs" => 32,
|
74
|
+
# "image" =>
|
75
|
+
# "https://assets.coingecko.com/markets/images/466/small/binance_futures.jpg?1568609512",
|
76
|
+
# "year_established" => 2019,
|
77
|
+
# "country" => nil,
|
78
|
+
# "description" => "",
|
79
|
+
# "url" => "https://www.binance.com/"
|
80
|
+
# }]
|
81
|
+
def derivative_exchanges(**options)
|
82
|
+
get 'derivatives/exchanges', options
|
83
|
+
end
|
84
|
+
|
85
|
+
# @deprecated Use {#derivative_exchanges} instead
|
86
|
+
def get_derivative_exchanges(options: {})
|
87
|
+
derivative_exchanges(**options)
|
88
|
+
end
|
89
|
+
|
90
|
+
# Fetches data for a specific derivative exchange.
|
91
|
+
#
|
92
|
+
# @param id [String] the id of the derivative exchange.
|
93
|
+
#
|
94
|
+
# @option options [String] :include_tickers determines whether to display all tickers or only show unexpired tickers. Does not return any ticker data if left blank. Valid values: all, unexpired
|
95
|
+
#
|
96
|
+
# @return [Hash] the derivative exchange's information.
|
97
|
+
#
|
98
|
+
# @example Get data for the Binance Futures derivative exchange.
|
99
|
+
# client.derivative_exchange('binance_futures')
|
100
|
+
# @example Sample response object
|
101
|
+
# {
|
102
|
+
# "name" => "Binance (Futures)",
|
103
|
+
# "open_interest_btc" => 237845.78,
|
104
|
+
# "trade_volume_24h_btc" => "2226117.02",
|
105
|
+
# "number_of_perpetual_pairs" => 132,
|
106
|
+
# "number_of_futures_pairs" => 32,
|
107
|
+
# "image" =>
|
108
|
+
# "https://assets.coingecko.com/markets/images/466/small/binance_futures.jpg?1568609512",
|
109
|
+
# "year_established" => 2019,
|
110
|
+
# "country" => nil,
|
111
|
+
# "description" => "",
|
112
|
+
# "url" => "https://www.binance.com/"
|
113
|
+
# }
|
114
|
+
def derivative_exchange(id, **options)
|
115
|
+
get "derivatives/exchanges/#{id}", options
|
116
|
+
end
|
117
|
+
|
118
|
+
# @deprecated Use {#derivative_exchange} instead
|
119
|
+
def get_derivative_exchange(id:, options: {})
|
120
|
+
derivative_exchange(id, **options)
|
121
|
+
end
|
122
|
+
|
123
|
+
# Fetches the list ids and names of derivative exchanges listed in CoinGecko.
|
124
|
+
#
|
125
|
+
# @return [Array<Hash>] each derivative exchange's id and name.
|
126
|
+
#
|
127
|
+
# @example Get all unexpired derivatives.
|
128
|
+
# client.derivative_exchanges_ids_and_names
|
129
|
+
# @example Sample response object (truncated)
|
130
|
+
# [
|
131
|
+
# {
|
132
|
+
# "id" => "binance_futures",
|
133
|
+
# "name" => "Binance (Futures)"
|
134
|
+
# },
|
135
|
+
# {
|
136
|
+
# "id" => "huobi_dm",
|
137
|
+
# "name" => "Huobi Futures"
|
138
|
+
# },
|
139
|
+
# {
|
140
|
+
# "id" => "ftx",
|
141
|
+
# "name" => "FTX (Derivatives)"
|
142
|
+
# }
|
143
|
+
# ]
|
144
|
+
def derivative_exchanges_ids_and_names
|
145
|
+
get 'derivatives/exchanges/list'
|
146
|
+
end
|
147
|
+
|
148
|
+
# @deprecated Use {#derivative_exchanges_ids_and_names} instead
|
149
|
+
def get_derivative_exchanges_ids_and_names
|
150
|
+
derivative_exchanges_ids_and_names
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module CoingeckoRuby
|
2
|
+
class Client
|
3
|
+
module Events
|
4
|
+
# Fetches the list of events listed in CoinGecko.
|
5
|
+
# @todo CoinGecko API is not returning any list of events. Investigate why this is happening.
|
6
|
+
#
|
7
|
+
# @option options [String] :country_code country code to fetch list of events from.
|
8
|
+
# @option options [String] :type type of event to fetch.
|
9
|
+
# @option options [Integer] :page sets the page for results.
|
10
|
+
# @option options [Boolean] :upcoming_events_only (true) determines whether to fetch upcoming events only or all events.
|
11
|
+
# @option options [String] :from_date fetch events after the specified date. Date must be in the format of yyyy-mm-dd
|
12
|
+
# @option options [String] :to_date fetch events before the specified date. Date must be in the format of yyyy-mm-dd
|
13
|
+
#
|
14
|
+
# @return [Array<Hash>] each finance platform's name, category, url, facts (description), and centralized status.
|
15
|
+
#
|
16
|
+
# @example Get all upcoming events.
|
17
|
+
# client.events(upcoming_events_only: true)
|
18
|
+
def events(**options)
|
19
|
+
get 'events', options
|
20
|
+
end
|
21
|
+
|
22
|
+
# @deprecated Use {#events} instead
|
23
|
+
def get_events(options: {})
|
24
|
+
events(**options)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Fetches the valid list of countries to fetch events from.
|
28
|
+
#
|
29
|
+
# @return [Hash] each country's name and code and the total country count.
|
30
|
+
#
|
31
|
+
# @example Get all event countries.
|
32
|
+
# client.event_countries
|
33
|
+
# @example Sample response object (truncated)
|
34
|
+
# {
|
35
|
+
# "data" => [{
|
36
|
+
# "country" => nil,
|
37
|
+
# "code" => ""
|
38
|
+
# },
|
39
|
+
# {
|
40
|
+
# "country" => "Malaysia",
|
41
|
+
# "code" => "MY"
|
42
|
+
# },
|
43
|
+
# {
|
44
|
+
# "country" => "Singapore",
|
45
|
+
# "code" => "SG"
|
46
|
+
# },
|
47
|
+
# {
|
48
|
+
# "country" => "United States",
|
49
|
+
# "code" => "US"
|
50
|
+
# }
|
51
|
+
# ],
|
52
|
+
# "count" => 4
|
53
|
+
# }
|
54
|
+
def event_countries
|
55
|
+
get 'events/countries'
|
56
|
+
end
|
57
|
+
|
58
|
+
# @deprecated Use {#event_countries} instead
|
59
|
+
def get_event_countries
|
60
|
+
event_countries
|
61
|
+
end
|
62
|
+
|
63
|
+
# Fetches the valid list of events to fetch.
|
64
|
+
#
|
65
|
+
# @return [Array<Hash>] the list of event types and total event types count.
|
66
|
+
#
|
67
|
+
# @example Get all event types.
|
68
|
+
# client.event_types
|
69
|
+
# @example Sample response object
|
70
|
+
# {
|
71
|
+
# "data" => ["Event", "Conference", "Meetup"],
|
72
|
+
# "count" => 3
|
73
|
+
# }
|
74
|
+
def event_types
|
75
|
+
get 'events/types'
|
76
|
+
end
|
77
|
+
|
78
|
+
# @deprecated Use {#event_types} instead
|
79
|
+
def get_event_types
|
80
|
+
event_types
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,193 @@
|
|
1
|
+
module CoingeckoRuby
|
2
|
+
class Client
|
3
|
+
module Exchanges
|
4
|
+
# Fetches complete data for every exchange currently supported by the CoinGecko API.
|
5
|
+
#
|
6
|
+
# @option options [Integer] :per_page (100) sets the number of results to return per page.
|
7
|
+
# @option options [Integer] :page sets the page for results.
|
8
|
+
#
|
9
|
+
# @return [Array<Hash>] returns an array of hashes of detailed exchange data.
|
10
|
+
#
|
11
|
+
# @example Fetch complete exchange data with 1 result per page.
|
12
|
+
# client.exchanges(per_page: 1)
|
13
|
+
# @example Sample response object
|
14
|
+
# [{
|
15
|
+
# "id" => "binance",
|
16
|
+
# "name" => "Binance",
|
17
|
+
# "year_established" => 2017,
|
18
|
+
# "country" => "Cayman Islands",
|
19
|
+
# "description" => "",
|
20
|
+
# "url" => "https://www.binance.com/",
|
21
|
+
# "image" => "https://assets.coingecko.com/markets/images/52/small/binance.jpg?1519353250",
|
22
|
+
# "has_trading_incentive" => false,
|
23
|
+
# "trust_score" => 10,
|
24
|
+
# "trust_score_rank" => 1,
|
25
|
+
# "trade_volume_24h_btc" => 982949.3975723931,
|
26
|
+
# "trade_volume_24h_btc_normalized" => 982949.3975723931
|
27
|
+
# }]
|
28
|
+
def exchanges(**options)
|
29
|
+
get 'exchanges', options
|
30
|
+
end
|
31
|
+
|
32
|
+
# @deprecated Use {#exchanges} instead
|
33
|
+
def get_exchanges(options: {})
|
34
|
+
exchanges(**options)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Fetches complete data for a specific exchange.
|
38
|
+
#
|
39
|
+
# @param id [String] the exchange id to fetch.
|
40
|
+
#
|
41
|
+
# @return [Hash] returns detailed data for the given exchange.
|
42
|
+
#
|
43
|
+
# @example Fetch complete exchange data for Binance.
|
44
|
+
# client.exchange('binance')
|
45
|
+
def exchange(id)
|
46
|
+
get "exchanges/#{id}"
|
47
|
+
end
|
48
|
+
|
49
|
+
# @deprecated Use {#exchange} instead
|
50
|
+
def get_exchange_data(id:)
|
51
|
+
exchange(id)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Fetches exchange ids for every exchange currently supported by the CoinGecko API.
|
55
|
+
#
|
56
|
+
# @return [Array<Hash>] returns an array of hashes of the exchange id and name.
|
57
|
+
#
|
58
|
+
# @example Fetch all exchange ids.
|
59
|
+
# client.exchange_ids
|
60
|
+
# @example Sample response object
|
61
|
+
# [{
|
62
|
+
# "id" => "aave",
|
63
|
+
# "name" => "Aave"
|
64
|
+
# }, {
|
65
|
+
# "id" => "aax",
|
66
|
+
# "name" => "AAX"
|
67
|
+
# }, {
|
68
|
+
# "id" => "aax_futures",
|
69
|
+
# "name" => "AAX Futures"
|
70
|
+
# }]
|
71
|
+
def exchange_ids
|
72
|
+
get 'exchanges/list'
|
73
|
+
end
|
74
|
+
|
75
|
+
# @deprecated Use {#exchange_ids} instead
|
76
|
+
def get_exchanges_ids
|
77
|
+
exchange_ids
|
78
|
+
end
|
79
|
+
|
80
|
+
# Fetches coin tickers from a specific exchange.
|
81
|
+
#
|
82
|
+
# @param id [String] the exchange id to fetch.
|
83
|
+
#
|
84
|
+
# @option options [String] :coin_ids comma-separated list of tickers to fetch from the given exchange id (e.g. 'bitcoin, eth, litecoin').
|
85
|
+
# @option options [String] :include_exchange_logo includes the exchange's logo.
|
86
|
+
# @option options [Integer] :page sets the page for results.
|
87
|
+
# @option options [String] :order ('trust_score_desc') sets the sort order for results. Valid values: trust_score_desc', 'trust_score_asc', 'volume_desc.
|
88
|
+
# @option options [Boolean] :depth (false) displays orderbook depth (2%).
|
89
|
+
#
|
90
|
+
# @return [Hash] the exchange name and tickers as provided or all tickers if coin_ids is not provided.
|
91
|
+
#
|
92
|
+
# @example Get Bitcoin tickers from Binance.
|
93
|
+
# client.exchange_tickers('binance', coin_ids: 'bitcoin')
|
94
|
+
# @example Sample response object
|
95
|
+
# {
|
96
|
+
# "name" => "Binance", "tickers" => [{
|
97
|
+
# "base" => "BTC",
|
98
|
+
# "target" => "USDT",
|
99
|
+
# "market" => {
|
100
|
+
# "name" => "Binance", "identifier" => "binance", "has_trading_incentive" => false
|
101
|
+
# },
|
102
|
+
# "last" => 48890.78,
|
103
|
+
# "volume" => 86837.96789156958,
|
104
|
+
# "converted_last" => {
|
105
|
+
# "btc" => 0.99871776, "eth" => 12.706618, "usd" => 48867
|
106
|
+
# },
|
107
|
+
# "converted_volume" => {
|
108
|
+
# "btc" => 86727, "eth" => 1103417, "usd" => 4243490314
|
109
|
+
# },
|
110
|
+
# "trust_score" => "green",
|
111
|
+
# "bid_ask_spread_percentage" => 0.01002,
|
112
|
+
# "timestamp" => "2021-05-16T07:37:00+00:00",
|
113
|
+
# "last_traded_at" => "2021-05-16T07:37:00+00:00",
|
114
|
+
# "last_fetch_at" => "2021-05-16T07:37:00+00:00",
|
115
|
+
# "is_anomaly" => false,
|
116
|
+
# "is_stale" => false,
|
117
|
+
# "trade_url" => "https://www.binance.com/en/trade/BTC_USDT?ref=37754157",
|
118
|
+
# "token_info_url" => nil,
|
119
|
+
# "coin_id" => "bitcoin",
|
120
|
+
# "target_coin_id" => "tether"
|
121
|
+
# }]
|
122
|
+
# }
|
123
|
+
def exchange_tickers(id, **options)
|
124
|
+
get "exchanges/#{id}/tickers", options
|
125
|
+
end
|
126
|
+
|
127
|
+
# @deprecated Use {#exchange_tickers} instead
|
128
|
+
def get_exchange_tickers(id:, options: {})
|
129
|
+
exchange_tickers(id, **options)
|
130
|
+
end
|
131
|
+
|
132
|
+
# Fetches news,announcments, and updates from a specific exchange.
|
133
|
+
#
|
134
|
+
# @param id [String] the exchange id to fetch.
|
135
|
+
#
|
136
|
+
# @option options [Integer] :per_page (100) sets the number of results to return per page.
|
137
|
+
# @option options [Integer] :page sets the page for results.
|
138
|
+
#
|
139
|
+
# @return [Hash] the status update data for the given exchange.
|
140
|
+
#
|
141
|
+
# @example Get the last 3 status updates from Binance.
|
142
|
+
# client.exchange_status('binance', per_page: 1)
|
143
|
+
# @example Sample response object
|
144
|
+
# {
|
145
|
+
# "status_updates" => [{
|
146
|
+
# "description" => "Juventus and Paris Saint-Germain Fan Tokens on Binance Launchpool! \r\n\r\nFarm JUV and PSG tokens By Staking BNB, BUSD & CHZ Tokens\r\n\r\nClick here➡️ https://ter.li/JUV-and-PSG-tokens",
|
147
|
+
# "category" => "general",
|
148
|
+
# "created_at" => "2020-12-14T11:18:49.085Z",
|
149
|
+
# "user" => "Darc",
|
150
|
+
# "user_title" => "Marketing",
|
151
|
+
# "pin" => false,
|
152
|
+
# "project" => {
|
153
|
+
# "type" => "Market", "id" => "binance", "name" => "Binance", "image" => {
|
154
|
+
# "thumb" => "https://assets.coingecko.com/markets/images/52/thumb/binance.jpg?1519353250", "small" => "https://assets.coingecko.com/markets/images/52/small/binance.jpg?1519353250", "large" => "https://assets.coingecko.com/markets/images/52/large/binance.jpg?1519353250"
|
155
|
+
# }
|
156
|
+
# }
|
157
|
+
# }]
|
158
|
+
# }
|
159
|
+
def exchange_status(id, **options)
|
160
|
+
get "exchanges/#{id}/status_updates", options
|
161
|
+
end
|
162
|
+
|
163
|
+
# @deprecated Use {#exchange_status} instead
|
164
|
+
def get_exchange_status_updates(id:, options: {})
|
165
|
+
exchange_status(id, **options)
|
166
|
+
end
|
167
|
+
|
168
|
+
# Fetches trade volume data from a specific exchange.
|
169
|
+
#
|
170
|
+
# @param id [String] the exchange id to fetch.
|
171
|
+
# @param days [Integer] number of days ago to fetch trade volume data. Defaults to 7 days.
|
172
|
+
#
|
173
|
+
# @return [Array<Array<Float, String>>] the exchange's trade volume data in 10-minute intervals, hourly intervals, or daily intervals depending on the number of days given
|
174
|
+
#
|
175
|
+
# @example Get Binance's trade volume from a day ago.
|
176
|
+
# client.exchange_volume('binance', days: 1)
|
177
|
+
# @example Sample response object (truncated)
|
178
|
+
# [
|
179
|
+
# [1620550200000.0, "1005476.2667217359131632087795432176371669876601688256288859094077173967202827700534809705802"], # [UNIX timestamp for exchange trade volume data, trade volume]
|
180
|
+
# [1620553800000.0, "1018442.2775982988468591292487708941265043962519659923872972786095536137127193126138169804088"],
|
181
|
+
# [1620557400000.0, "1042158.4333253484568599192332614201045319574863305612009609211497295171074087677404153278624"]
|
182
|
+
# ]
|
183
|
+
def exchange_volume(id, days: 7, **options)
|
184
|
+
get "exchanges/#{id}/volume_chart", { days: days, **options }
|
185
|
+
end
|
186
|
+
|
187
|
+
# @deprecated Use {#exchange_volume} instead
|
188
|
+
def get_exchange_volume(id:, days:)
|
189
|
+
exchange_volume(id, days: days)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
module CoingeckoRuby
|
2
|
+
class Client
|
3
|
+
module Finance
|
4
|
+
# Fetches the list of finance platforms (e.g. Celsius Network, dYdX) listed in CoinGecko.
|
5
|
+
#
|
6
|
+
# @option options [Integer] :per_page (100) sets the number of results to return per page.
|
7
|
+
# @option options [Integer] :page sets the page for results.
|
8
|
+
#
|
9
|
+
# @return [Array<Hash>] each finance platform's name, category, url, facts (description), and centralized status.
|
10
|
+
#
|
11
|
+
# @example Get all finance platforms.
|
12
|
+
# client.finance_platforms
|
13
|
+
# @example Sample response object (truncated)
|
14
|
+
# [
|
15
|
+
# {
|
16
|
+
# "name"=>"Binance Staking",
|
17
|
+
# "facts"=>"",
|
18
|
+
# "category"=>"CeFi Platform",
|
19
|
+
# "centralized"=>true,
|
20
|
+
# "website_url"=>"https://www.binance.com/en/staking"
|
21
|
+
# },
|
22
|
+
# {
|
23
|
+
# "name"=>"Celsius Network",
|
24
|
+
# "facts"=>"",
|
25
|
+
# "category"=>"CeFi Platform",
|
26
|
+
# "centralized"=>true,
|
27
|
+
# "website_url"=>"https://celsius.network/"
|
28
|
+
# },
|
29
|
+
# {
|
30
|
+
# "name"=>"Cobo",
|
31
|
+
# "facts"=>"",
|
32
|
+
# "category"=>"CeFi Platform",
|
33
|
+
# "centralized"=>true,
|
34
|
+
# "website_url"=>"https://cobo.com/"
|
35
|
+
# }
|
36
|
+
# ]
|
37
|
+
def finance_platforms(**options)
|
38
|
+
get 'finance_platforms', options
|
39
|
+
end
|
40
|
+
|
41
|
+
# @deprecated Use {#finance_platforms} instead
|
42
|
+
def get_finance_platforms(options: {})
|
43
|
+
finance_platforms(**options)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Fetches the list of finance products (e.g. Binance Savings, Nexo, Fulcrum) listed in CoinGecko.
|
47
|
+
#
|
48
|
+
# @option options [Integer] :per_page (100) sets the number of results to return per page.
|
49
|
+
# @option options [Integer] :page sets the page for results.
|
50
|
+
# @option options [Integer] :start_at filter results based on the launch date of the product in UNIX timestamp format.
|
51
|
+
# @option options [Integer] :end_at filter results based on the end date of the product in UNIX timestamp format.
|
52
|
+
#
|
53
|
+
# @return [Array<Hash>] each finance product's platform, identifier, supply and borrow rate percentage, and the product duration data.
|
54
|
+
#
|
55
|
+
# @example Get all finance products.
|
56
|
+
# client.finance_products
|
57
|
+
# @example Sample response object (truncated)
|
58
|
+
# [
|
59
|
+
# {"platform"=>"Binance Savings",
|
60
|
+
# "identifier"=>"XTZ001",
|
61
|
+
# "supply_rate_percentage"=>"1.956035",
|
62
|
+
# "borrow_rate_percentage"=>nil,
|
63
|
+
# "number_duration"=>nil,
|
64
|
+
# "length_duration"=>nil,
|
65
|
+
# "start_at"=>0,
|
66
|
+
# "end_at"=>0,
|
67
|
+
# "value_at"=>0,
|
68
|
+
# "redeem_at"=>0},
|
69
|
+
# {"platform"=>"Binance Savings",
|
70
|
+
# "identifier"=>"ZEC001",
|
71
|
+
# "supply_rate_percentage"=>"0.182865",
|
72
|
+
# "borrow_rate_percentage"=>nil,
|
73
|
+
# "number_duration"=>nil,
|
74
|
+
# "length_duration"=>nil,
|
75
|
+
# "start_at"=>0,
|
76
|
+
# "end_at"=>0,
|
77
|
+
# "value_at"=>0,
|
78
|
+
# "redeem_at"=>0},
|
79
|
+
# {"platform"=>"Crypto.com",
|
80
|
+
# "identifier"=>"BAT",
|
81
|
+
# "supply_rate_percentage"=>"2.0",
|
82
|
+
# "borrow_rate_percentage"=>nil,
|
83
|
+
# "number_duration"=>nil,
|
84
|
+
# "length_duration"=>nil,
|
85
|
+
# "start_at"=>0,
|
86
|
+
# "end_at"=>0,
|
87
|
+
# "value_at"=>0,
|
88
|
+
# "redeem_at"=>0}
|
89
|
+
# ]
|
90
|
+
def finance_products(**options)
|
91
|
+
get 'finance_products', options
|
92
|
+
end
|
93
|
+
|
94
|
+
# @deprecated Use {#finance_products} instead
|
95
|
+
def get_finance_products(options: {})
|
96
|
+
finance_products(**options)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|