cryptocompare 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0f8133ee058822cc3531df3961de9889336dedd4
4
- data.tar.gz: 3ead7fcfed5d1867b769fb0d3d6757cfb36cd440
3
+ metadata.gz: 58a7edd2c27081e3d18bd5a9c5f55bd4d6188ed1
4
+ data.tar.gz: 4d975e8065f816ebd0a4fd29a8fabcf01d62cb52
5
5
  SHA512:
6
- metadata.gz: 4dae6daacfecec746cb2ae149d6f9dd4823dc8dfb765daf6bb547c08b42c5c660908295b3614fcba273e71eecacaefab3b89236bdd742bca6d52bef299395822
7
- data.tar.gz: f1000a6478adb71a97c3b48bbc6e4da8a958d1dfba34d82fef3a4a17ab07b58398fd6db16d9150c736501c069be4851b846fbc447ee25769b9bc6c2b1ba38c19
6
+ metadata.gz: 407a2341f2489649265710af467979b09646cf1c3180c24e6fe69a535b7cc078571b8d40f74cd561d00a41f3e6d32c2a4d1d0de4406d2d9aeef3d071b23b5594
7
+ data.tar.gz: 2355645467ebc2f6f5f09ea8bbc484f553a3c72f2fc5dbac5c30583308164c8d2a9082bf6c078841016f3ca6fd9732c87f65a40f482e9f60e91f075258302ca7
@@ -1,5 +1,5 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 1.9.3
4
+ - 2.0.0
5
5
  before_install: gem install bundler -v 1.12.5
data/README.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # Cryptocompare
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/cryptocompare`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ [![Gem Version](https://badge.fury.io/rb/cryptocompare.svg)](http://badge.fury.io/rb/cryptocompare) [![Build Status](https://travis-ci.org/alexanderdavidpan/cryptocompare.svg)](https://travis-ci.org/alexanderdavidpan/cryptocompare)
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+
6
+ This is a Ruby gem that utilizes the CryptoCompare API to fetch data related to cryptocurrencies.
6
7
 
7
8
  ## Installation
8
9
 
@@ -22,7 +23,121 @@ Or install it yourself as:
22
23
 
23
24
  ## Usage
24
25
 
25
- TODO: Write usage instructions here
26
+ To use Cryptocompare, just require it like so:
27
+
28
+ ```ruby
29
+ require 'cryptocompare'
30
+ ```
31
+
32
+ Examples:
33
+
34
+ 1. Cryptocurrency to Fiat
35
+
36
+ ```ruby
37
+ Cryptocompare::Price.find('BTC', 'USD')
38
+ # => {"BTC"=>{"USD"=>2594.07}}
39
+ ```
40
+
41
+ 2. Fiat to Cryptocurrency
42
+
43
+ ```ruby
44
+ Cryptocompare::Price.find('USD', 'BTC')
45
+ # => {"USD"=>{"BTC"=>0.0004176}}
46
+ ```
47
+ 3. Cryptocurrency to Cryptocurrency
48
+
49
+ ```ruby
50
+ Cryptocompare::Price.find('BTC', 'ETH')
51
+ # =>{"BTC"=>{"ETH"=>9.29}}
52
+ ```
53
+
54
+ 4. Fiat to Fiat
55
+
56
+ ```ruby
57
+ Cryptocompare::Price.find('USD', 'EUR')
58
+ # => {"USD"=>{"EUR"=>0.8772}}
59
+ ```
60
+
61
+ 5. Multiple cryptocurrencies to multiple fiat
62
+
63
+ ```ruby
64
+ Cryptocompare::Price.find(['BTC','ETH', 'LTC'], ['USD', 'EUR', 'CNY'])
65
+ # => {"BTC"=>{"USD"=>2501.61, "EUR"=>2197.04, "CNY"=>17329.48}, "ETH"=>{"USD"=>236.59, "EUR"=>209.39, "CNY"=>1655.15}, "LTC"=>{"USD"=>45.74, "EUR"=>40.33, "CNY"=>310.5}}
66
+ ```
67
+
68
+ 6. Multiple fiat to multiple cryptocurrencies
69
+
70
+ ```ruby
71
+ Cryptocompare::Price.find(['USD', 'EUR'], ['BTC','ETH', 'LTC'])
72
+ # => {"USD"=>{"BTC"=>0.0003996, "ETH"=>0.004238, "LTC"=>0.02184}, "EUR"=>{"BTC"=>0.0004548, "ETH"=>0.00477, "LTC"=>0.0248}}
73
+ ```
74
+
75
+ 7. Find prices based on exchange
76
+
77
+ ```ruby
78
+ Cryptocompare::Price.find('DASH', 'USD', {'e' => 'Kraken'})
79
+ # => {"DASH"=>{"USD"=>152.4}}
80
+ ```
81
+
82
+ ## Supported Exchanges
83
+
84
+ * BTC38
85
+ * BTCC
86
+ * BTCE
87
+ * BTCMarkets
88
+ * BTCXIndia
89
+ * BTER
90
+ * Bit2C
91
+ * BitBay
92
+ * bitFlyer
93
+ * bitFlyerFX
94
+ * BitMarket
95
+ * BitSquare
96
+ * Bitfinex
97
+ * Bitso
98
+ * Bitstamp
99
+ * Bittrex
100
+ * Bleutrade
101
+ * CCEDK
102
+ * Cexio
103
+ * CoinCheck
104
+ * Coinbase
105
+ * Coinfloor
106
+ * Coinone
107
+ * Coinse
108
+ * Coinsetter
109
+ * Cryptopia
110
+ * Cryptsy
111
+ * EtherDelta
112
+ * EthexIndia
113
+ * Gatecoin
114
+ * Gemini
115
+ * HitBTC
116
+ * Huobi
117
+ * itBit
118
+ * Korbit
119
+ * Kraken
120
+ * LakeBTC
121
+ * Liqui
122
+ * LiveCoin
123
+ * LocalBitcoins
124
+ * Luno
125
+ * MercadoBitcoin
126
+ * MonetaGo
127
+ * OKCoin
128
+ * Paymium
129
+ * Poloniex
130
+ * QuadrigaCX
131
+ * Quoine
132
+ * TheRockTrading
133
+ * Tidex
134
+ * Unocoin
135
+ * Vaultoro
136
+ * Yacuna
137
+ * Yobit
138
+ * Yunbi
139
+
140
+ If no exchange option is specified, then the default 'CCCAGG' is used. This is cryptocompare's aggregated data.
26
141
 
27
142
  ## Development
28
143
 
@@ -32,10 +147,9 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
32
147
 
33
148
  ## Contributing
34
149
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/cryptocompare. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
150
+ Bug reports and pull requests are welcome on GitHub at https://github.com/alexanderdavidpan/cryptocompare. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
36
151
 
37
152
 
38
153
  ## License
39
154
 
40
155
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
41
-
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ require "rake/testtask"
4
4
  Rake::TestTask.new(:test) do |t|
5
5
  t.libs << "test"
6
6
  t.libs << "lib"
7
- t.test_files = FileList['test/**/*_test.rb']
7
+ t.test_files = FileList['test/**/test_*.rb']
8
8
  end
9
9
 
10
10
  task :default => :test
@@ -0,0 +1,55 @@
1
+ BTC38: BTC38
2
+ BTCC: BTCC
3
+ BTCE: BTCE
4
+ BTCMARKETS: BTCMarkets
5
+ BTCXINDIA: BTCXIndia
6
+ BTER: BTER
7
+ BIT2C: Bit2C
8
+ BITBAY: BitBay
9
+ BITFLYER: bitFlyer
10
+ BITFLYERFX: bitFlyerFX
11
+ BITMARKET: BitMarket
12
+ BITSQUARE: BitSquare
13
+ BITFINEX: Bitfinex
14
+ BITSO: Bitso
15
+ BITSTAMP: Bitstamp
16
+ BITTREX: Bittrex
17
+ BLEUTRADE: Bleutrade
18
+ CCEDK: CCEDK
19
+ CEXIO: Cexio
20
+ COINCHECK: CoinCheck
21
+ COINBASE: Coinbase
22
+ COINFLOOR: Coinfloor
23
+ COINONE: Coinone
24
+ COINSE: Coinse
25
+ COINSETTER: Coinsetter
26
+ CRYPTOPIA: Cryptopia
27
+ CRYPTSY: Cryptsy
28
+ ETHERDELTA: EtherDelta
29
+ ETHEXINDIA: EthexIndia
30
+ GATECOIN: Gatecoin
31
+ GEMINI: Gemini
32
+ HITBTC: HitBTC
33
+ HUOBI: Huobi
34
+ ITBIT: itBit
35
+ KORBIT: Korbit
36
+ KRAKEN: Kraken
37
+ LAKEBTC: LakeBTC
38
+ LIQUI: Liqui
39
+ LIVECOIN: LiveCoin
40
+ LOCALBITCOINS: LocalBitcoins
41
+ LUNO: Luno
42
+ MERCADOBITCOIN: MercadoBitcoin
43
+ MONETAGO: MonetaGo
44
+ OKCOIN: OKCoin
45
+ PAYMIUM: Paymium
46
+ POLONIEX: Poloniex
47
+ QUADRIGACX: QuadrigaCX
48
+ QUOINE: Quoine
49
+ THEROCKTRADING: TheRockTrading
50
+ TIDEX: Tidex
51
+ UNOCOIN: Unocoin
52
+ VAULTORO: Vaultoro
53
+ YACUNA: Yacuna
54
+ YOBIT: Yobit
55
+ YUNBI: Yunbi
@@ -2,5 +2,4 @@ require "cryptocompare/version"
2
2
  require_relative "cryptocompare/price"
3
3
 
4
4
  module Cryptocompare
5
- # Your code goes here...
6
5
  end
@@ -1,8 +1,10 @@
1
1
  require 'faraday'
2
2
  require 'json'
3
+ require 'yaml'
3
4
 
4
5
  module Cryptocompare
5
6
  API_URL = 'https://min-api.cryptocompare.com/data/pricemulti'
7
+ EXCHANGES = YAML::load_file(File.join(__dir__, '../../config/exchanges.yml'))
6
8
 
7
9
  module Price
8
10
  # Finds the currency price(s) of a given currency symbol
@@ -10,6 +12,8 @@ module Cryptocompare
10
12
  # Params:
11
13
  # from_syms [String, Array] - currency symbols (ex: 'BTC', 'ETH', 'LTC', 'USD', 'EUR', 'CNY')
12
14
  # to_syms [String, Array] - currency symbols (ex: 'USD', 'EUR', 'CNY', 'USD', 'EUR', 'CNY')
15
+ # opts [Hash] - Options hash
16
+ # opts[e] [String] - name of exchange (ex: 'Coinbase','Poloniex') Default: CCCAGG.
13
17
  #
14
18
  # Returns:
15
19
  # [Hash] Hash with currency prices
@@ -33,12 +37,34 @@ module Cryptocompare
33
37
  # 4. Fiat to Fiat
34
38
  # Cryptocompare::Price.find('USD', 'EUR')
35
39
  # => {"USD"=>{"EUR"=>0.8772}}
36
- def self.find(from_syms, to_syms)
40
+ #
41
+ # 5. Multiple cryptocurrencies to multiple fiat
42
+ # Cryptocompare::Price.find(['BTC','ETH', 'LTC'], ['USD', 'EUR', 'CNY'])
43
+ # => {"BTC"=>{"USD"=>2501.61, "EUR"=>2197.04, "CNY"=>17329.48}, "ETH"=>{"USD"=>236.59, "EUR"=>209.39, "CNY"=>1655.15}, "LTC"=>{"USD"=>45.74, "EUR"=>40.33, "CNY"=>310.5}}
44
+ #
45
+ # 6. Multiple fiat to multiple cryptocurrencies
46
+ # Cryptocompare::Price.find(['USD', 'EUR'], ['BTC','ETH', 'LTC'])
47
+ # => {"USD"=>{"BTC"=>0.0003996, "ETH"=>0.004238, "LTC"=>0.02184}, "EUR"=>{"BTC"=>0.0004548, "ETH"=>0.00477, "LTC"=>0.0248}}
48
+ #
49
+ # 7. Find prices based on exchange
50
+ #
51
+ # Cryptocompare::Price.find('DASH', 'USD', {'e' => 'Kraken'})
52
+ # # => {"DASH"=>{"USD"=>152.4}}
53
+ def self.find(from_syms, to_syms, opts = {})
37
54
  fsyms = Array(from_syms).join(',')
38
55
  tsyms = Array(to_syms).join(',')
39
56
  full_path = API_URL + "?fsyms=#{fsyms}&tsyms=#{tsyms}"
57
+ full_path += "&e=#{set_exchange(opts['e'])}" if opts['e']
40
58
  api_resp = Faraday.get(full_path)
41
59
  JSON.parse(api_resp.body)
42
60
  end
61
+
62
+ private
63
+
64
+ # Helper method to overcome case-sensitive exchange name enforced by the API.
65
+ # If no supported exchange mapping is found, it will try user's input.
66
+ def self.set_exchange(exchange)
67
+ EXCHANGES[exchange.upcase] || exchange
68
+ end
43
69
  end
44
70
  end
@@ -1,3 +1,3 @@
1
1
  module Cryptocompare
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,111 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cryptocompare
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander David Pan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-08 00:00:00.000000000 Z
11
+ date: 2017-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.12'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.12'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '5.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: vcr
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: webmock
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: faraday
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: json
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  description: A Ruby gem for communicating with the CryptoCompare API
@@ -115,8 +115,8 @@ executables: []
115
115
  extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
- - ".gitignore"
119
- - ".travis.yml"
118
+ - .gitignore
119
+ - .travis.yml
120
120
  - CODE_OF_CONDUCT.md
121
121
  - Gemfile
122
122
  - LICENSE.txt
@@ -124,6 +124,7 @@ files:
124
124
  - Rakefile
125
125
  - bin/console
126
126
  - bin/setup
127
+ - config/exchanges.yml
127
128
  - cryptocompare.gemspec
128
129
  - lib/cryptocompare.rb
129
130
  - lib/cryptocompare/price.rb
@@ -139,17 +140,17 @@ require_paths:
139
140
  - lib
140
141
  required_ruby_version: !ruby/object:Gem::Requirement
141
142
  requirements:
142
- - - ">="
143
+ - - '>='
143
144
  - !ruby/object:Gem::Version
144
145
  version: '0'
145
146
  required_rubygems_version: !ruby/object:Gem::Requirement
146
147
  requirements:
147
- - - ">="
148
+ - - '>='
148
149
  - !ruby/object:Gem::Version
149
150
  version: '0'
150
151
  requirements: []
151
152
  rubyforge_project:
152
- rubygems_version: 2.5.1
153
+ rubygems_version: 2.4.8
153
154
  signing_key:
154
155
  specification_version: 4
155
156
  summary: A Ruby gem for communicating with the CryptoCompare API