coinmarketcap-ruby-client 1.0.0 → 1.1.0
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/.github/workflows/ruby.yml +25 -0
- data/CHANGELOG.md +9 -3
- data/Gemfile.lock +1 -1
- data/README.md +78 -1
- data/lib/coinmarketcap/endpoints/cryptocurrency.rb +13 -1
- data/lib/coinmarketcap/resources/listing.rb +27 -0
- data/lib/coinmarketcap/resources/metadata.rb +22 -0
- data/lib/coinmarketcap/resources/quote.rb +23 -0
- data/lib/coinmarketcap/resources/url.rb +15 -0
- data/lib/coinmarketcap/resources.rb +4 -0
- data/lib/coinmarketcap/version.rb +1 -1
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c92b7dcc192e4c5124e62a64404cd9022047a2ef349face7b0231cefe95c9349
|
4
|
+
data.tar.gz: ce068a4e060eeaf614d3d2908009e04efc54268e6189c83e3a975ead1eb20b7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad8cdadeef43edf7aeca19f9f5ed2cba0cf95f7571acb8e62bb2c594c79ebe1a04b2f88942350e42466ed5233ccca416c08a3851f1d0623ffef880d7b13a7f39
|
7
|
+
data.tar.gz: 7fdc18918edec0df7c660315755bae5ae4ac7af49253c065bae9255780baa209534b4121bec1cd036666c893d4f7e8cc42dc13e9de1b1437332283b88f4f1154
|
@@ -0,0 +1,25 @@
|
|
1
|
+
name: Ruby
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
strategy:
|
14
|
+
matrix:
|
15
|
+
ruby-version: ['2.6', '2.7', '3.0']
|
16
|
+
|
17
|
+
steps:
|
18
|
+
- uses: actions/checkout@v2
|
19
|
+
- name: Set up Ruby
|
20
|
+
uses: ruby/setup-ruby@v1
|
21
|
+
with:
|
22
|
+
ruby-version: ${{ matrix.ruby-version }}
|
23
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
24
|
+
- name: Run tests
|
25
|
+
run: bundle exec rake
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,12 @@
|
|
1
|
-
### 1.
|
2
|
-
|
1
|
+
### 1.1.1 (Next)
|
2
|
+
|
3
|
+
- your contributions here ...
|
4
|
+
|
5
|
+
### 1.1.0 (2021/10/09)
|
6
|
+
|
7
|
+
- [#5](https://github.com/koffeefinance/coinmarketcap-ruby-client/pull/5): Added support to fetch metadata for a cryptocurrency via the /info endpoint - [@mathu97](https://github.com/mathu97).
|
8
|
+
- [#10](https://github.com/koffeefinance/coinmarketcap-ruby-client/pull/10): Added support to fetch latest listings - [@mathu97](https://github.com/mathu97).
|
3
9
|
|
4
10
|
### 1.0.0 (2021/10/05)
|
5
|
-
* [#1](https://github.com/koffeefinance/coinmarketcap-ruby-client/pull/1): Added support to fetch the CoinMarketCap ID Map.
|
6
11
|
|
12
|
+
- [#1](https://github.com/koffeefinance/coinmarketcap-ruby-client/pull/1): Added support to fetch the CoinMarketCap ID Map - [@mathu97](https://github.com/mathu97).
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# CoinMarketCap Ruby API Client
|
2
2
|
|
3
|
+
[](https://badge.fury.io/rb/coinmarketcap-ruby-client) 
|
4
|
+
|
3
5
|
A ruby API client for [CoinMarketCap](https://coinmarketcap.com/api/documentation/v1/)
|
4
6
|
|
5
7
|
# Table of Contents
|
@@ -9,6 +11,8 @@ A ruby API client for [CoinMarketCap](https://coinmarketcap.com/api/documentatio
|
|
9
11
|
- [Get an API Key](#get-an-api-token)
|
10
12
|
- [Configure](#configure)
|
11
13
|
- [Get CoinMarketCap ID Map](#get-coinmarketcap-id-map)
|
14
|
+
- [Get Cryptocurrency Metadata](#get-cryptocurrency-metadata)
|
15
|
+
- [Get Latest Listings](#get-latest-listings)
|
12
16
|
- [Development](#development)
|
13
17
|
- [Contributing](#contributing)
|
14
18
|
- [License](#license)
|
@@ -71,7 +75,80 @@ platform.slug # 'ethereum'
|
|
71
75
|
platform.token_address # '0xdac17f958d2ee523a2206206994597c13d831ec7'
|
72
76
|
```
|
73
77
|
|
74
|
-
See [
|
78
|
+
See [CoinMarketCap ID Map](https://coinmarketcap.com/api/documentation/v1/#operation/getV1CryptocurrencyMap) for detailed documentation.
|
79
|
+
|
80
|
+
### Get Cryptocurrency Metadata
|
81
|
+
|
82
|
+
Fetches static metadata available for one or more cryptocurrencies.
|
83
|
+
|
84
|
+
```ruby
|
85
|
+
info = client.info(symbol: 'ETH')
|
86
|
+
|
87
|
+
metadata = info['ETH']
|
88
|
+
metadata.id # 1027
|
89
|
+
metadata.name # 'Ethereum'
|
90
|
+
metadata.symbol # 'ETH'
|
91
|
+
metadata.category # 'coin'
|
92
|
+
metadata.description # 'Ethereum (ETH) is a cryptocurrency . Users are able to generate ETH ...'
|
93
|
+
metadata.slug # 'ethereum'
|
94
|
+
metadata.logo # 'https://s2.coinmarketcap.com/static/img/coins/64x64/1027.png'
|
95
|
+
metadata.notice # ''
|
96
|
+
metadata.tags # ['mineable', 'pow', 'smart-contracts', ...]
|
97
|
+
metadata.platform # nil
|
98
|
+
|
99
|
+
urls = metadata.urls
|
100
|
+
urls.website # ['https://www.ethereum.org/', 'https://en.wikipedia.org/wiki/Ethereum']
|
101
|
+
urls.twitter # ['https://twitter.com/ethereum']
|
102
|
+
urls.message_board # ['https://forum.ethereum.org/', 'https://ethresear.ch/']
|
103
|
+
urls.chat # ['https://gitter.im/orgs/ethereum/rooms']
|
104
|
+
urls.explorer # ['https://etherscan.io/', 'https://ethplorer.io/', 'https://blockchair.com/ethereum', ...]
|
105
|
+
urls.reddit # ['https://reddit.com/r/ethereum']
|
106
|
+
urls.technical_doc # ['https://github.com/ethereum/wiki/wiki/White-Paper']
|
107
|
+
urls.source_code # ['https://github.com/ethereum']
|
108
|
+
urls.announcement # ['https://bitcointalk.org/index.php?topic=428589.0']
|
109
|
+
```
|
110
|
+
|
111
|
+
See [Cryptocurrency Metadata](https://coinmarketcap.com/api/documentation/v1/#operation/getV1CryptocurrencyInfo) for detailed documentation.
|
112
|
+
|
113
|
+
### Get Latest Listings
|
114
|
+
|
115
|
+
Returns a paginated list of all active cryptocurrencies with latest market data.
|
116
|
+
|
117
|
+
```ruby
|
118
|
+
listings = client.listings_latest
|
119
|
+
listing = listings.first
|
120
|
+
|
121
|
+
listing.id # 1
|
122
|
+
listing.name # 'Bitcoin'
|
123
|
+
listing.symbol # 'BTC'
|
124
|
+
listing.slug # 'bitcoin'
|
125
|
+
listing.num_market_pairs # 8527
|
126
|
+
listing.date_added # <Date: 2013-04-28 ((2456411j,0s,0n),+0s,2299161j)>
|
127
|
+
listing.tags # ['mineable', 'pow', 'sha-256', 'store-of-value', ...]
|
128
|
+
listing.max_supply # 21000000
|
129
|
+
listing.circulating_supply # 18837706
|
130
|
+
listing.total_supply # 18837706
|
131
|
+
listing.platform # nil
|
132
|
+
listing.cmc_rank # 1
|
133
|
+
listing.last_updated # <Date: 2021-10-08 ((2459496j,0s,0n),+0s,2299161j)>
|
134
|
+
|
135
|
+
quote_in_usd = listing.quote['USD']
|
136
|
+
|
137
|
+
quote_in_usd.price # 53853.84605722145
|
138
|
+
quote_in_usd.volume_24h # 35664606394.86121
|
139
|
+
quote_in_usd.percent_change_1h # -0.08049597
|
140
|
+
quote_in_usd.percent_change_24h # -1.93058
|
141
|
+
quote_in_usd.percent_change_7d # 23.57830268
|
142
|
+
quote_in_usd.percent_change_30d # 15.8506565
|
143
|
+
quote_in_usd.percent_change_60d # 24.08594399
|
144
|
+
quote_in_usd.percent_change_90d # 59.25745607
|
145
|
+
quote_in_usd.market_cap # 1014482918995.1969
|
146
|
+
quote_in_usd.market_cap_dominance # 44.5955
|
147
|
+
quote_in_usd.fully_diluted_market_cap # 1130930767201.65
|
148
|
+
quote_in_usd.last_updated # <Date: 2021-10-08 ((2459496j,0s,0n),+0s,2299161j)>
|
149
|
+
```
|
150
|
+
|
151
|
+
See [Listings Latest](https://coinmarketcap.com/api/documentation/v1/#operation/getV1CryptocurrencyListingsLatest) for detailed documentation.
|
75
152
|
|
76
153
|
## Development
|
77
154
|
|
@@ -2,9 +2,21 @@ module CoinMarketCap
|
|
2
2
|
module Endpoints
|
3
3
|
module Cryptocurrency
|
4
4
|
def map(options = {})
|
5
|
-
response = get('cryptocurrency/map',
|
5
|
+
response = get('cryptocurrency/map', options)
|
6
6
|
response['data'].map { |row| CoinMarketCap::Resources::Cryptocurrency.new(row) }
|
7
7
|
end
|
8
|
+
|
9
|
+
def info(options = {})
|
10
|
+
response = get('cryptocurrency/info', options)
|
11
|
+
response['data'].map do |key, value|
|
12
|
+
[key, CoinMarketCap::Resources::Metadata.new(value)]
|
13
|
+
end.to_h
|
14
|
+
end
|
15
|
+
|
16
|
+
def listings_latest(options = {})
|
17
|
+
response = get('cryptocurrency/listings/latest', options)
|
18
|
+
response['data'].map { |row| CoinMarketCap::Resources::Listing.new(row) }
|
19
|
+
end
|
8
20
|
end
|
9
21
|
end
|
10
22
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module CoinMarketCap
|
2
|
+
module Resources
|
3
|
+
class Listing < Resource
|
4
|
+
property 'id'
|
5
|
+
property 'name'
|
6
|
+
property 'symbol'
|
7
|
+
property 'slug'
|
8
|
+
property 'cmc_rank'
|
9
|
+
property 'num_market_pairs'
|
10
|
+
property 'circulating_supply'
|
11
|
+
property 'total_supply'
|
12
|
+
property 'market_cap_by_total_supply'
|
13
|
+
property 'max_supply'
|
14
|
+
property 'last_updated', transform_with: ->(v) { iso8601_date(v) }
|
15
|
+
property 'date_added', transform_with: ->(v) { iso8601_date(v) }
|
16
|
+
property 'tags'
|
17
|
+
property 'platform', transform_with: lambda { |v|
|
18
|
+
CoinMarketCap::Resources::Platform.new(v) unless v.nil?
|
19
|
+
}
|
20
|
+
property 'quote', transform_with: lambda { |v|
|
21
|
+
v.map do |key, value|
|
22
|
+
[key, CoinMarketCap::Resources::Quote.new(value)]
|
23
|
+
end.to_h
|
24
|
+
}
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module CoinMarketCap
|
2
|
+
module Resources
|
3
|
+
class Metadata < Resource
|
4
|
+
property 'id'
|
5
|
+
property 'name'
|
6
|
+
property 'symbol'
|
7
|
+
property 'category'
|
8
|
+
property 'slug'
|
9
|
+
property 'logo'
|
10
|
+
property 'description'
|
11
|
+
property 'date_added', transform_with: ->(v) { iso8601_date(v) }
|
12
|
+
property 'notice'
|
13
|
+
property 'tags'
|
14
|
+
property 'platform', transform_with: lambda { |v|
|
15
|
+
CoinMarketCap::Resources::Platform.new(v) unless v.nil?
|
16
|
+
}
|
17
|
+
property 'urls', transform_with: lambda { |v|
|
18
|
+
CoinMarketCap::Resources::URL.new(v) unless v.nil?
|
19
|
+
}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module CoinMarketCap
|
2
|
+
module Resources
|
3
|
+
class Quote < Resource
|
4
|
+
property 'price'
|
5
|
+
property 'volume_24h'
|
6
|
+
property 'volume_24h_reported'
|
7
|
+
property 'volume_7d'
|
8
|
+
property 'volume_7d_reported'
|
9
|
+
property 'volume_30d'
|
10
|
+
property 'volume_30d_reported'
|
11
|
+
property 'market_cap'
|
12
|
+
property 'market_cap_dominance'
|
13
|
+
property 'fully_diluted_market_cap'
|
14
|
+
property 'percent_change_1h'
|
15
|
+
property 'percent_change_24h'
|
16
|
+
property 'percent_change_7d'
|
17
|
+
property 'percent_change_30d'
|
18
|
+
property 'percent_change_60d'
|
19
|
+
property 'percent_change_90d'
|
20
|
+
property 'last_updated', transform_with: ->(v) { iso8601_date(v) }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module CoinMarketCap
|
2
|
+
module Resources
|
3
|
+
class URL < Resource
|
4
|
+
property 'website'
|
5
|
+
property 'technical_doc'
|
6
|
+
property 'explorer'
|
7
|
+
property 'source_code'
|
8
|
+
property 'message_board'
|
9
|
+
property 'chat'
|
10
|
+
property 'announcement'
|
11
|
+
property 'reddit'
|
12
|
+
property 'twitter'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -2,3 +2,7 @@ require_relative 'resources/resource'
|
|
2
2
|
|
3
3
|
require_relative 'resources/platform'
|
4
4
|
require_relative 'resources/cryptocurrency'
|
5
|
+
require_relative 'resources/url'
|
6
|
+
require_relative 'resources/metadata'
|
7
|
+
require_relative 'resources/quote'
|
8
|
+
require_relative 'resources/listing'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coinmarketcap-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mathusan Selvarajah
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-10-
|
11
|
+
date: 2021-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -115,6 +115,7 @@ executables: []
|
|
115
115
|
extensions: []
|
116
116
|
extra_rdoc_files: []
|
117
117
|
files:
|
118
|
+
- ".github/workflows/ruby.yml"
|
118
119
|
- ".rubocop.yml"
|
119
120
|
- CHANGELOG.md
|
120
121
|
- CODE_OF_CONDUCT.md
|
@@ -141,8 +142,12 @@ files:
|
|
141
142
|
- lib/coinmarketcap/errors/permission_denied_error.rb
|
142
143
|
- lib/coinmarketcap/resources.rb
|
143
144
|
- lib/coinmarketcap/resources/cryptocurrency.rb
|
145
|
+
- lib/coinmarketcap/resources/listing.rb
|
146
|
+
- lib/coinmarketcap/resources/metadata.rb
|
144
147
|
- lib/coinmarketcap/resources/platform.rb
|
148
|
+
- lib/coinmarketcap/resources/quote.rb
|
145
149
|
- lib/coinmarketcap/resources/resource.rb
|
150
|
+
- lib/coinmarketcap/resources/url.rb
|
146
151
|
- lib/coinmarketcap/version.rb
|
147
152
|
homepage: https://github.com/koffeefinance/coinmarketcap-ruby-client
|
148
153
|
licenses:
|