currency-rate 1.2.0 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile +2 -1
- data/README.md +8 -0
- data/Rakefile +29 -0
- data/VERSION +1 -1
- data/api_keys.yml.sample +3 -0
- data/bin/rake +29 -0
- data/bin/rspec +29 -0
- data/currency-rate.gemspec +46 -35
- data/lib/adapter.rb +4 -3
- data/lib/adapters/crypto/binance_adapter.rb +42 -0
- data/lib/adapters/crypto/bitfinex_adapter.rb +29 -6
- data/lib/adapters/crypto/bitpay_adapter.rb +17 -2
- data/lib/adapters/crypto/bitstamp_adapter.rb +9 -8
- data/lib/adapters/crypto/coinbase_adapter.rb +20 -4
- data/lib/adapters/crypto/exmo_adapter.rb +27 -0
- data/lib/adapters/crypto/kraken_adapter.rb +22 -11
- data/lib/adapters/crypto/localbitcoins_adapter.rb +13 -2
- data/lib/adapters/fiat/currency_layer_adapter.rb +14 -12
- data/lib/adapters/fiat/fixer_adapter.rb +4 -2
- data/lib/adapters/fiat/forge_adapter.rb +5 -3
- data/lib/adapters/fiat/free_forex_adapter.rb +32 -0
- data/lib/configuration.rb +12 -8
- data/lib/currency_rate.rb +16 -7
- data/lib/fetcher.rb +28 -41
- data/lib/storage/file_storage.rb +2 -2
- data/lib/synchronizer.rb +31 -17
- data/spec/fixtures/adapters/binance_rates.yml +993 -0
- data/spec/fixtures/adapters/bitfinex_rates.yml +4050 -0
- data/spec/fixtures/adapters/{bitpay_adapter.yml → bitpay_rates.yml} +179 -175
- data/spec/fixtures/adapters/bitstamp_rates.yml +61 -0
- data/spec/fixtures/adapters/{btc_china_adapter.yml → btc_china_rates.yml} +0 -0
- data/spec/fixtures/adapters/{btce_adapter.yml → btce_rates.yml} +0 -0
- data/spec/fixtures/adapters/coinbase_rates.yml +181 -0
- data/spec/fixtures/adapters/{currency_layer_adapter.yml → currency_layer_rates.yml} +0 -0
- data/spec/fixtures/adapters/exmo_rates.yml +1251 -0
- data/spec/fixtures/adapters/fixer_rates.yml +174 -0
- data/spec/fixtures/adapters/{forge_adapter.yml → forge_rates.yml} +0 -0
- data/spec/fixtures/adapters/free_forex_rates.yml +59 -0
- data/spec/fixtures/adapters/{huobi_adapter.yml → huobi_rates.yml} +0 -0
- data/spec/fixtures/adapters/kraken_rates.yml +507 -0
- data/spec/fixtures/adapters/localbitcoins_rates.yml +493 -0
- data/spec/fixtures/adapters/normalized/binance_rates.yml +134 -0
- data/spec/fixtures/adapters/normalized/bitfinex_rates.yml +95 -0
- data/spec/fixtures/adapters/normalized/bitpay_rates.yml +164 -0
- data/spec/fixtures/adapters/normalized/bitstamp_rates.yml +9 -0
- data/spec/fixtures/adapters/normalized/{btc_china_adapter.yml → btc_china_rates.yml} +0 -0
- data/spec/fixtures/adapters/normalized/{btce_adapter.yml → btce_rates.yml} +0 -0
- data/spec/fixtures/adapters/normalized/coinbase_rates.yml +179 -0
- data/spec/fixtures/adapters/normalized/{currency_layer_adapter.yml → currency_layer_rates.yml} +0 -0
- data/spec/fixtures/adapters/normalized/exmo_rates.yml +42 -0
- data/spec/fixtures/adapters/normalized/fixer_rates.yml +170 -0
- data/spec/fixtures/adapters/normalized/{forge_adapter.yml → forge_rates.yml} +0 -0
- data/spec/fixtures/adapters/normalized/free_forex_rates.yml +16 -0
- data/spec/fixtures/adapters/normalized/{huobi_adapter.yml → huobi_rates.yml} +0 -0
- data/spec/fixtures/adapters/normalized/kraken_rates.yml +21 -0
- data/spec/fixtures/adapters/normalized/localbitcoins_rates.yml +73 -0
- data/spec/fixtures/adapters/normalized/{okcoin_adapter.yml → okcoin_rates.yml} +0 -0
- data/spec/fixtures/adapters/normalized/{yahoo_adapter.yml → yahoo_rates.yml} +0 -0
- data/spec/fixtures/adapters/{okcoin_adapter.yml → okcoin_rates.yml} +0 -0
- data/spec/fixtures/adapters/{yahoo_adapter.yml → yahoo_rates.yml} +0 -0
- data/spec/lib/adapters/crypto/binance_adapter_spec.rb +13 -0
- data/spec/lib/adapters/crypto/exmo_adapter_spec.rb +13 -0
- data/spec/lib/adapters/fiat/free_forex_adapter_spec.rb +13 -0
- data/spec/lib/fetcher_spec.rb +17 -49
- data/spec/lib/synchronizer_spec.rb +36 -2
- data/spec/spec_helper.rb +2 -2
- metadata +66 -35
- data/spec/fixtures/adapters/bitfinex_adapter.yml +0 -18
- data/spec/fixtures/adapters/bitstamp_adapter.yml +0 -30
- data/spec/fixtures/adapters/coinbase_adapter.yml +0 -680
- data/spec/fixtures/adapters/fixer_adapter.yml +0 -34
- data/spec/fixtures/adapters/kraken_adapter.yml +0 -124
- data/spec/fixtures/adapters/localbitcoins_adapter.yml +0 -381
- data/spec/fixtures/adapters/normalized/bitfinex_adapter.yml +0 -2
- data/spec/fixtures/adapters/normalized/bitpay_adapter.yml +0 -161
- data/spec/fixtures/adapters/normalized/bitstamp_adapter.yml +0 -3
- data/spec/fixtures/adapters/normalized/coinbase_adapter.yml +0 -680
- data/spec/fixtures/adapters/normalized/fixer_adapter.yml +0 -32
- data/spec/fixtures/adapters/normalized/kraken_adapter.yml +0 -4
- data/spec/fixtures/adapters/normalized/localbitcoins_adapter.yml +0 -57
data/spec/fixtures/adapters/normalized/{currency_layer_adapter.yml → currency_layer_rates.yml}
RENAMED
File without changes
|
@@ -0,0 +1,42 @@
|
|
1
|
+
---
|
2
|
+
anchor: BTC
|
3
|
+
USD: !ruby/object:BigDecimal 27:0.412399257125e4
|
4
|
+
EUR: !ruby/object:BigDecimal 27:0.366553264601e4
|
5
|
+
RUB: !ruby/object:BigDecimal 27:0.29018345585319e6
|
6
|
+
UAH: !ruby/object:BigDecimal 27:0.11617031145012e6
|
7
|
+
PLN: !ruby/object:BigDecimal 27:0.1519344116808e5
|
8
|
+
TRY: !ruby/object:BigDecimal 27:0.213391822269e5
|
9
|
+
QTUM: !ruby/object:BigDecimal 36:0.1550579916889e4
|
10
|
+
HB: !ruby/object:BigDecimal 36:0.403225806451613e6
|
11
|
+
SMART: !ruby/object:BigDecimal 36:0.227790432801822e6
|
12
|
+
XEM: !ruby/object:BigDecimal 36:0.542888165038e5
|
13
|
+
GUSD: !ruby/object:BigDecimal 36:0.3987240829346e4
|
14
|
+
LSK: !ruby/object:BigDecimal 36:0.2674082789603e4
|
15
|
+
NEO: !ruby/object:BigDecimal 36:0.517694808556e3
|
16
|
+
ADA: !ruby/object:BigDecimal 36:0.91911764705882e5
|
17
|
+
ZRX: !ruby/object:BigDecimal 36:0.11650937900501e5
|
18
|
+
GNT: !ruby/object:BigDecimal 36:0.54824561403509e5
|
19
|
+
TRX: !ruby/object:BigDecimal 36:0.192307692307692e6
|
20
|
+
GAS: !ruby/object:BigDecimal 36:0.1795590030884e4
|
21
|
+
INK: !ruby/object:BigDecimal 36:0.609756097560976e6
|
22
|
+
MNX: !ruby/object:BigDecimal 36:0.3726754369619e4
|
23
|
+
OMG: !ruby/object:BigDecimal 36:0.24258302404e4
|
24
|
+
XLM: !ruby/object:BigDecimal 36:0.32010243277849e5
|
25
|
+
EOS: !ruby/object:BigDecimal 36:0.1431147494061e4
|
26
|
+
STQ: !ruby/object:BigDecimal 36:0.1e8
|
27
|
+
BTG: !ruby/object:BigDecimal 36:0.265336446614e3
|
28
|
+
HBZ: !ruby/object:BigDecimal 36:0.7692307692307692e7
|
29
|
+
DXT: !ruby/object:BigDecimal 36:0.15625e7
|
30
|
+
BTCZ: !ruby/object:BigDecimal 36:0.14285714285714286e8
|
31
|
+
BCH: !ruby/object:BigDecimal 36:0.20142187732e2
|
32
|
+
DASH: !ruby/object:BigDecimal 36:0.44778993279e2
|
33
|
+
ETH: !ruby/object:BigDecimal 36:0.3014734212e2
|
34
|
+
ETC: !ruby/object:BigDecimal 36:0.818089597173e3
|
35
|
+
LTC: !ruby/object:BigDecimal 36:0.120243468976e3
|
36
|
+
ZEC: !ruby/object:BigDecimal 36:0.61436948795e2
|
37
|
+
XRP: !ruby/object:BigDecimal 36:0.10799136069114e5
|
38
|
+
XMR: !ruby/object:BigDecimal 36:0.75039189217e2
|
39
|
+
USDT: !ruby/object:BigDecimal 27:0.399124450824e4
|
40
|
+
DOGE: !ruby/object:BigDecimal 36:0.1612903225806452e7
|
41
|
+
WAVES: !ruby/object:BigDecimal 36:0.1084316446912e4
|
42
|
+
KICK: !ruby/object:BigDecimal 36:0.666666666666667e6
|
@@ -0,0 +1,170 @@
|
|
1
|
+
---
|
2
|
+
anchor: EUR
|
3
|
+
AED: !ruby/object:BigDecimal 18:0.4190433e1
|
4
|
+
AFN: !ruby/object:BigDecimal 18:0.86750751e2
|
5
|
+
ALL: !ruby/object:BigDecimal 18:0.123894177e3
|
6
|
+
AMD: !ruby/object:BigDecimal 18:0.552361927e3
|
7
|
+
ANG: !ruby/object:BigDecimal 18:0.2024004e1
|
8
|
+
AOA: !ruby/object:BigDecimal 18:0.353057265e3
|
9
|
+
ARS: !ruby/object:BigDecimal 18:0.42809533e2
|
10
|
+
AUD: !ruby/object:BigDecimal 18:0.1582907e1
|
11
|
+
AWG: !ruby/object:BigDecimal 18:0.2053435e1
|
12
|
+
AZN: !ruby/object:BigDecimal 18:0.1945039e1
|
13
|
+
BAM: !ruby/object:BigDecimal 18:0.1954698e1
|
14
|
+
BBD: !ruby/object:BigDecimal 18:0.2282392e1
|
15
|
+
BDT: !ruby/object:BigDecimal 18:0.95666108e2
|
16
|
+
BGN: !ruby/object:BigDecimal 18:0.1954813e1
|
17
|
+
BHD: !ruby/object:BigDecimal 18:0.430138e0
|
18
|
+
BIF: !ruby/object:BigDecimal 27:0.2036151438e4
|
19
|
+
BMD: !ruby/object:BigDecimal 18:0.1140797e1
|
20
|
+
BND: !ruby/object:BigDecimal 18:0.1797565e1
|
21
|
+
BOB: !ruby/object:BigDecimal 18:0.7879427e1
|
22
|
+
BRL: !ruby/object:BigDecimal 18:0.4464624e1
|
23
|
+
BSD: !ruby/object:BigDecimal 18:0.1140284e1
|
24
|
+
BTC: !ruby/object:BigDecimal 18:0.325e-3
|
25
|
+
BTN: !ruby/object:BigDecimal 18:0.82736909e2
|
26
|
+
BWP: !ruby/object:BigDecimal 18:0.12189431e2
|
27
|
+
BYN: !ruby/object:BigDecimal 18:0.2420828e1
|
28
|
+
BYR: !ruby/object:BigDecimal 27:0.22359620244e5
|
29
|
+
BZD: !ruby/object:BigDecimal 18:0.2298481e1
|
30
|
+
CAD: !ruby/object:BigDecimal 18:0.1521903e1
|
31
|
+
CDF: !ruby/object:BigDecimal 18:0.183782349e4
|
32
|
+
CHF: !ruby/object:BigDecimal 18:0.1129246e1
|
33
|
+
CLF: !ruby/object:BigDecimal 18:0.28574e-1
|
34
|
+
CLP: !ruby/object:BigDecimal 18:0.772005783e3
|
35
|
+
CNY: !ruby/object:BigDecimal 18:0.7886107e1
|
36
|
+
COP: !ruby/object:BigDecimal 27:0.3588662009e4
|
37
|
+
CRC: !ruby/object:BigDecimal 18:0.680194491e3
|
38
|
+
CUC: !ruby/object:BigDecimal 18:0.1140797e1
|
39
|
+
CUP: !ruby/object:BigDecimal 18:0.30231119e2
|
40
|
+
CVE: !ruby/object:BigDecimal 18:0.110207259e3
|
41
|
+
CZK: !ruby/object:BigDecimal 18:0.25866448e2
|
42
|
+
DJF: !ruby/object:BigDecimal 18:0.202742871e3
|
43
|
+
DKK: !ruby/object:BigDecimal 18:0.7463937e1
|
44
|
+
DOP: !ruby/object:BigDecimal 18:0.57216723e2
|
45
|
+
DZD: !ruby/object:BigDecimal 18:0.135092974e3
|
46
|
+
EGP: !ruby/object:BigDecimal 18:0.20492025e2
|
47
|
+
ERN: !ruby/object:BigDecimal 18:0.17111486e2
|
48
|
+
ETB: !ruby/object:BigDecimal 18:0.31744923e2
|
49
|
+
EUR: !ruby/object:BigDecimal 18:0.1e1
|
50
|
+
FJD: !ruby/object:BigDecimal 18:0.2412901e1
|
51
|
+
FKP: !ruby/object:BigDecimal 18:0.901207e0
|
52
|
+
GBP: !ruby/object:BigDecimal 18:0.90419e0
|
53
|
+
GEL: !ruby/object:BigDecimal 18:0.3031669e1
|
54
|
+
GGP: !ruby/object:BigDecimal 18:0.904152e0
|
55
|
+
GHS: !ruby/object:BigDecimal 18:0.5684252e1
|
56
|
+
GIP: !ruby/object:BigDecimal 18:0.901138e0
|
57
|
+
GMD: !ruby/object:BigDecimal 18:0.5652594e2
|
58
|
+
GNF: !ruby/object:BigDecimal 27:0.10367619672e5
|
59
|
+
GTQ: !ruby/object:BigDecimal 18:0.8817391e1
|
60
|
+
GYD: !ruby/object:BigDecimal 18:0.238283938e3
|
61
|
+
HKD: !ruby/object:BigDecimal 18:0.8915043e1
|
62
|
+
HNL: !ruby/object:BigDecimal 18:0.278081e2
|
63
|
+
HRK: !ruby/object:BigDecimal 18:0.7386886e1
|
64
|
+
HTG: !ruby/object:BigDecimal 18:0.85964186e2
|
65
|
+
HUF: !ruby/object:BigDecimal 18:0.323208325e3
|
66
|
+
IDR: !ruby/object:BigDecimal 27:0.16640805128e5
|
67
|
+
ILS: !ruby/object:BigDecimal 18:0.4260169e1
|
68
|
+
IMP: !ruby/object:BigDecimal 18:0.904152e0
|
69
|
+
INR: !ruby/object:BigDecimal 18:0.82867278e2
|
70
|
+
IQD: !ruby/object:BigDecimal 27:0.1360628524e4
|
71
|
+
IRR: !ruby/object:BigDecimal 27:0.48033255079e5
|
72
|
+
ISK: !ruby/object:BigDecimal 18:0.140192255e3
|
73
|
+
JEP: !ruby/object:BigDecimal 18:0.904152e0
|
74
|
+
JMD: !ruby/object:BigDecimal 18:0.145520191e3
|
75
|
+
JOD: !ruby/object:BigDecimal 18:0.809513e0
|
76
|
+
JPY: !ruby/object:BigDecimal 18:0.128784294e3
|
77
|
+
KES: !ruby/object:BigDecimal 18:0.116885581e3
|
78
|
+
KGS: !ruby/object:BigDecimal 18:0.79684553e2
|
79
|
+
KHR: !ruby/object:BigDecimal 27:0.4572086205e4
|
80
|
+
KMF: !ruby/object:BigDecimal 18:0.492266234e3
|
81
|
+
KPW: !ruby/object:BigDecimal 27:0.1026782997e4
|
82
|
+
KRW: !ruby/object:BigDecimal 27:0.1286647807e4
|
83
|
+
KWD: !ruby/object:BigDecimal 18:0.346923e0
|
84
|
+
KYD: !ruby/object:BigDecimal 18:0.950261e0
|
85
|
+
KZT: !ruby/object:BigDecimal 18:0.421604069e3
|
86
|
+
LAK: !ruby/object:BigDecimal 27:0.9754201712e4
|
87
|
+
LBP: !ruby/object:BigDecimal 27:0.1725284494e4
|
88
|
+
LKR: !ruby/object:BigDecimal 18:0.204157317e3
|
89
|
+
LRD: !ruby/object:BigDecimal 18:0.180303218e3
|
90
|
+
LSL: !ruby/object:BigDecimal 18:0.16164559e2
|
91
|
+
LTL: !ruby/object:BigDecimal 18:0.3368477e1
|
92
|
+
LVL: !ruby/object:BigDecimal 18:0.690057e0
|
93
|
+
LYD: !ruby/object:BigDecimal 18:0.1590245e1
|
94
|
+
MAD: !ruby/object:BigDecimal 18:0.10814183e2
|
95
|
+
MDL: !ruby/object:BigDecimal 18:0.19641666e2
|
96
|
+
MGA: !ruby/object:BigDecimal 27:0.4011041922e4
|
97
|
+
MKD: !ruby/object:BigDecimal 18:0.61477834e2
|
98
|
+
MMK: !ruby/object:BigDecimal 27:0.1781708565e4
|
99
|
+
MNT: !ruby/object:BigDecimal 18:0.300758667e4
|
100
|
+
MOP: !ruby/object:BigDecimal 18:0.9178057e1
|
101
|
+
MRO: !ruby/object:BigDecimal 18:0.407264625e3
|
102
|
+
MUR: !ruby/object:BigDecimal 18:0.38958117e2
|
103
|
+
MVR: !ruby/object:BigDecimal 18:0.17625101e2
|
104
|
+
MWK: !ruby/object:BigDecimal 18:0.838491417e3
|
105
|
+
MXN: !ruby/object:BigDecimal 18:0.23160444e2
|
106
|
+
MYR: !ruby/object:BigDecimal 18:0.4759426e1
|
107
|
+
MZN: !ruby/object:BigDecimal 18:0.70239183e2
|
108
|
+
NAD: !ruby/object:BigDecimal 18:0.16164884e2
|
109
|
+
NGN: !ruby/object:BigDecimal 18:0.41581876e3
|
110
|
+
NIO: !ruby/object:BigDecimal 18:0.36980029e2
|
111
|
+
NOK: !ruby/object:BigDecimal 18:0.969334e1
|
112
|
+
NPR: !ruby/object:BigDecimal 18:0.130153274e3
|
113
|
+
NZD: !ruby/object:BigDecimal 18:0.1657966e1
|
114
|
+
OMR: !ruby/object:BigDecimal 18:0.439167e0
|
115
|
+
PAB: !ruby/object:BigDecimal 18:0.1140284e1
|
116
|
+
PEN: !ruby/object:BigDecimal 18:0.3841349e1
|
117
|
+
PGK: !ruby/object:BigDecimal 18:0.3841919e1
|
118
|
+
PHP: !ruby/object:BigDecimal 18:0.60333293e2
|
119
|
+
PKR: !ruby/object:BigDecimal 18:0.159420683e3
|
120
|
+
PLN: !ruby/object:BigDecimal 18:0.4293195e1
|
121
|
+
PYG: !ruby/object:BigDecimal 27:0.6745648961e4
|
122
|
+
QAR: !ruby/object:BigDecimal 18:0.4153629e1
|
123
|
+
RON: !ruby/object:BigDecimal 18:0.4650803e1
|
124
|
+
RSD: !ruby/object:BigDecimal 18:0.118357611e3
|
125
|
+
RUB: !ruby/object:BigDecimal 18:0.75922546e2
|
126
|
+
RWF: !ruby/object:BigDecimal 27:0.1016723875e4
|
127
|
+
SAR: !ruby/object:BigDecimal 18:0.4280099e1
|
128
|
+
SBD: !ruby/object:BigDecimal 18:0.9192199e1
|
129
|
+
SCR: !ruby/object:BigDecimal 18:0.15560377e2
|
130
|
+
SDG: !ruby/object:BigDecimal 18:0.54299648e2
|
131
|
+
SEK: !ruby/object:BigDecimal 18:0.10327418e2
|
132
|
+
SGD: !ruby/object:BigDecimal 18:0.1565061e1
|
133
|
+
SHP: !ruby/object:BigDecimal 18:0.1506874e1
|
134
|
+
SLL: !ruby/object:BigDecimal 27:0.9668254108e4
|
135
|
+
SOS: !ruby/object:BigDecimal 18:0.661661925e3
|
136
|
+
SRD: !ruby/object:BigDecimal 18:0.8508037e1
|
137
|
+
STD: !ruby/object:BigDecimal 27:0.24014459857e5
|
138
|
+
SVC: !ruby/object:BigDecimal 18:0.997832e1
|
139
|
+
SYP: !ruby/object:BigDecimal 18:0.58751012e3
|
140
|
+
SZL: !ruby/object:BigDecimal 18:0.16254106e2
|
141
|
+
THB: !ruby/object:BigDecimal 18:0.37509991e2
|
142
|
+
TJS: !ruby/object:BigDecimal 18:0.10748815e2
|
143
|
+
TMT: !ruby/object:BigDecimal 18:0.4004197e1
|
144
|
+
TND: !ruby/object:BigDecimal 18:0.3339338e1
|
145
|
+
TOP: !ruby/object:BigDecimal 18:0.2572612e1
|
146
|
+
TRY: !ruby/object:BigDecimal 18:0.605644e1
|
147
|
+
TTD: !ruby/object:BigDecimal 18:0.7685834e1
|
148
|
+
TWD: !ruby/object:BigDecimal 18:0.35252915e2
|
149
|
+
TZS: !ruby/object:BigDecimal 27:0.2623711447e4
|
150
|
+
UAH: !ruby/object:BigDecimal 18:0.31627438e2
|
151
|
+
UGX: !ruby/object:BigDecimal 27:0.4255571622e4
|
152
|
+
USD: !ruby/object:BigDecimal 18:0.1140797e1
|
153
|
+
UYU: !ruby/object:BigDecimal 18:0.36676581e2
|
154
|
+
UZS: !ruby/object:BigDecimal 27:0.9481335171e4
|
155
|
+
VEF: !ruby/object:BigDecimal 27:0.283565331696e6
|
156
|
+
VND: !ruby/object:BigDecimal 27:0.26575891697e5
|
157
|
+
VUV: !ruby/object:BigDecimal 18:0.129037865e3
|
158
|
+
WST: !ruby/object:BigDecimal 18:0.2964678e1
|
159
|
+
XAF: !ruby/object:BigDecimal 18:0.655593406e3
|
160
|
+
XAG: !ruby/object:BigDecimal 18:0.78535e-1
|
161
|
+
XAU: !ruby/object:BigDecimal 18:0.917e-3
|
162
|
+
XCD: !ruby/object:BigDecimal 18:0.3083061e1
|
163
|
+
XDR: !ruby/object:BigDecimal 18:0.823261e0
|
164
|
+
XOF: !ruby/object:BigDecimal 18:0.655581712e3
|
165
|
+
XPF: !ruby/object:BigDecimal 18:0.119190293e3
|
166
|
+
YER: !ruby/object:BigDecimal 18:0.285598477e3
|
167
|
+
ZAR: !ruby/object:BigDecimal 18:0.16371807e2
|
168
|
+
ZMK: !ruby/object:BigDecimal 27:0.10268538687e5
|
169
|
+
ZMW: !ruby/object:BigDecimal 18:0.13512712e2
|
170
|
+
ZWL: !ruby/object:BigDecimal 18:0.367741614e3
|
File without changes
|
@@ -0,0 +1,16 @@
|
|
1
|
+
anchor: "USD"
|
2
|
+
JPY: 113.7615
|
3
|
+
CHF: 0.98699
|
4
|
+
CAD: 1.26549
|
5
|
+
SEK: 8.21227
|
6
|
+
NOK: 8.0148
|
7
|
+
MXN: 19.0939
|
8
|
+
ZAR: 13.7208
|
9
|
+
TRY: 3.71892
|
10
|
+
CNH: 6.63922
|
11
|
+
EUR: 0.852751
|
12
|
+
GBP: 0.757828
|
13
|
+
AUD: 1.28239
|
14
|
+
NZD: 1.43683
|
15
|
+
XAU: 0.000781711
|
16
|
+
XAG: 0.058658
|
File without changes
|
@@ -0,0 +1,21 @@
|
|
1
|
+
---
|
2
|
+
anchor: USD
|
3
|
+
USD: !ruby/object:BigDecimal 18:0.1e1
|
4
|
+
ADA: !ruby/object:BigDecimal 36:0.20704791089e2
|
5
|
+
BCH: !ruby/object:BigDecimal 36:0.4784688995215311e-2
|
6
|
+
BSV: !ruby/object:BigDecimal 45:0.8703220191470844212358573e-2
|
7
|
+
DASH: !ruby/object:BigDecimal 45:0.10392957731840904603040979e-1
|
8
|
+
EOS: !ruby/object:BigDecimal 45:0.330098369314055588565392487e0
|
9
|
+
GNO: !ruby/object:BigDecimal 45:0.83892617449664429530201342e-1
|
10
|
+
QTUM: !ruby/object:BigDecimal 45:0.349076692149265193563025797e0
|
11
|
+
USDT: !ruby/object:BigDecimal 45:0.992851469420174741858617951e0
|
12
|
+
ETC: !ruby/object:BigDecimal 45:0.184229918938835666912306559e0
|
13
|
+
ETH: !ruby/object:BigDecimal 45:0.6795786612300373768263677e-2
|
14
|
+
LTC: !ruby/object:BigDecimal 36:0.27777777777777778e-1
|
15
|
+
REP: !ruby/object:BigDecimal 45:0.107654214662504037033049844e0
|
16
|
+
XTZ: !ruby/object:BigDecimal 36:0.1716148962e1
|
17
|
+
BTC: !ruby/object:BigDecimal 45:0.23810090716445629657849e-3
|
18
|
+
XLM: !ruby/object:BigDecimal 36:0.7151848038e1
|
19
|
+
XMR: !ruby/object:BigDecimal 45:0.17724211272598369372562921e-1
|
20
|
+
XRP: !ruby/object:BigDecimal 36:0.229652765e1
|
21
|
+
ZEC: !ruby/object:BigDecimal 45:0.14052838673412029229904441e-1
|
@@ -0,0 +1,73 @@
|
|
1
|
+
---
|
2
|
+
anchor: BTC
|
3
|
+
COP: !ruby/object:BigDecimal 27:0.127493114e8
|
4
|
+
USD: !ruby/object:BigDecimal 18:0.663911e4
|
5
|
+
TWD: !ruby/object:BigDecimal 18:0.12366578e6
|
6
|
+
GHS: !ruby/object:BigDecimal 18:0.1940597e5
|
7
|
+
DASH: !ruby/object:BigDecimal 18:0.4616e2
|
8
|
+
NGN: !ruby/object:BigDecimal 18:0.1483e7
|
9
|
+
EGP: !ruby/object:BigDecimal 18:0.7704933e5
|
10
|
+
IDR: !ruby/object:BigDecimal 27:0.6327229927e8
|
11
|
+
HNL: !ruby/object:BigDecimal 18:0.1e6
|
12
|
+
CRC: !ruby/object:BigDecimal 18:0.231011811e7
|
13
|
+
PEN: !ruby/object:BigDecimal 18:0.1465e5
|
14
|
+
AED: !ruby/object:BigDecimal 18:0.1422976e5
|
15
|
+
GBP: !ruby/object:BigDecimal 18:0.351652e4
|
16
|
+
MWK: !ruby/object:BigDecimal 18:0.344837627e7
|
17
|
+
DOP: !ruby/object:BigDecimal 18:0.19099927e6
|
18
|
+
LKR: !ruby/object:BigDecimal 18:0.82649798e6
|
19
|
+
DKK: !ruby/object:BigDecimal 18:0.218721e5
|
20
|
+
AUD: !ruby/object:BigDecimal 18:0.678064e4
|
21
|
+
PKR: !ruby/object:BigDecimal 18:0.64395025e6
|
22
|
+
JPY: !ruby/object:BigDecimal 18:0.41299434e6
|
23
|
+
TZS: !ruby/object:BigDecimal 18:0.91e7
|
24
|
+
VND: !ruby/object:BigDecimal 27:0.10147828492e9
|
25
|
+
KWD: !ruby/object:BigDecimal 18:0.128685e4
|
26
|
+
RON: !ruby/object:BigDecimal 18:0.1479364e5
|
27
|
+
CLP: !ruby/object:BigDecimal 18:0.33000033e7
|
28
|
+
MYR: !ruby/object:BigDecimal 18:0.1688598e5
|
29
|
+
THB: !ruby/object:BigDecimal 18:0.13069076e6
|
30
|
+
UAH: !ruby/object:BigDecimal 18:0.115e6
|
31
|
+
UGX: !ruby/object:BigDecimal 27:0.16e8
|
32
|
+
JOD: !ruby/object:BigDecimal 18:0.310621e4
|
33
|
+
XMR: !ruby/object:BigDecimal 18:0.7797e2
|
34
|
+
QAR: !ruby/object:BigDecimal 18:0.1902498e5
|
35
|
+
SAR: !ruby/object:BigDecimal 18:0.1615426e5
|
36
|
+
ETH: !ruby/object:BigDecimal 18:0.3142e2
|
37
|
+
CAD: !ruby/object:BigDecimal 18:0.606405e4
|
38
|
+
SEK: !ruby/object:BigDecimal 18:0.3699445e5
|
39
|
+
SGD: !ruby/object:BigDecimal 18:0.555581e4
|
40
|
+
HKD: !ruby/object:BigDecimal 18:0.3377905e5
|
41
|
+
GEL: !ruby/object:BigDecimal 18:0.1092341e5
|
42
|
+
VES: !ruby/object:BigDecimal 18:0.296637695e7
|
43
|
+
CHF: !ruby/object:BigDecimal 18:0.438436e4
|
44
|
+
IRR: !ruby/object:BigDecimal 27:0.418580977e9
|
45
|
+
XOF: !ruby/object:BigDecimal 18:0.260622993e7
|
46
|
+
KRW: !ruby/object:BigDecimal 18:0.493323495e7
|
47
|
+
CNY: !ruby/object:BigDecimal 18:0.2924707e5
|
48
|
+
BYN: !ruby/object:BigDecimal 18:0.998109e4
|
49
|
+
BDT: !ruby/object:BigDecimal 18:0.31244274e6
|
50
|
+
NZD: !ruby/object:BigDecimal 18:0.679631e4
|
51
|
+
TRY: !ruby/object:BigDecimal 18:0.2053274e5
|
52
|
+
XRP: !ruby/object:BigDecimal 18:0.1111831e5
|
53
|
+
XAF: !ruby/object:BigDecimal 18:0.216502725e7
|
54
|
+
EUR: !ruby/object:BigDecimal 18:0.359529e4
|
55
|
+
LTC: !ruby/object:BigDecimal 18:0.12205e3
|
56
|
+
MGA: !ruby/object:BigDecimal 27:0.1801846442e8
|
57
|
+
ARS: !ruby/object:BigDecimal 18:0.20910295e6
|
58
|
+
UYU: !ruby/object:BigDecimal 18:0.15183513e6
|
59
|
+
SZL: !ruby/object:BigDecimal 18:0.6942379e5
|
60
|
+
KZT: !ruby/object:BigDecimal 18:0.175083871e7
|
61
|
+
NOK: !ruby/object:BigDecimal 18:0.38584e5
|
62
|
+
RUB: !ruby/object:BigDecimal 18:0.30800031e6
|
63
|
+
ZAR: !ruby/object:BigDecimal 18:0.587e5
|
64
|
+
PAB: !ruby/object:BigDecimal 18:0.41e4
|
65
|
+
INR: !ruby/object:BigDecimal 18:0.30011104e6
|
66
|
+
MXN: !ruby/object:BigDecimal 18:0.879e5
|
67
|
+
CZK: !ruby/object:BigDecimal 18:0.8228387e5
|
68
|
+
BRL: !ruby/object:BigDecimal 18:0.1732362e5
|
69
|
+
MAD: !ruby/object:BigDecimal 18:0.4204896e5
|
70
|
+
PLN: !ruby/object:BigDecimal 18:0.1426295e5
|
71
|
+
PHP: !ruby/object:BigDecimal 18:0.19297456e6
|
72
|
+
KES: !ruby/object:BigDecimal 18:0.46254363e6
|
73
|
+
ILS: !ruby/object:BigDecimal 18:0.1445634e5
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe CurrencyRate::BinanceAdapter do
|
4
|
+
before(:all) { @data, @normalized = data_for :binance }
|
5
|
+
|
6
|
+
before { @adapter = CurrencyRate::BinanceAdapter.instance }
|
7
|
+
|
8
|
+
describe "#normalize" do
|
9
|
+
it "brings data to canonical form" do
|
10
|
+
expect(@adapter.normalize(@data)).to eq(@normalized)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe CurrencyRate::ExmoAdapter do
|
4
|
+
before(:all) { @data, @normalized = data_for :exmo }
|
5
|
+
|
6
|
+
before { @adapter = CurrencyRate::ExmoAdapter.instance }
|
7
|
+
|
8
|
+
describe "#normalize" do
|
9
|
+
it "brings data to canonical form" do
|
10
|
+
expect(@adapter.normalize(@data)).to eq(@normalized)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe CurrencyRate::FreeForexAdapter do
|
4
|
+
before(:all) { @data, @normalized = data_for :free_forex }
|
5
|
+
|
6
|
+
before { @adapter = CurrencyRate::FreeForexAdapter.instance }
|
7
|
+
|
8
|
+
describe "#normalize" do
|
9
|
+
it "brings data to canonical form" do
|
10
|
+
expect(@adapter.normalize(@data)).to eq(@normalized)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/spec/lib/fetcher_spec.rb
CHANGED
@@ -4,7 +4,7 @@ RSpec.describe CurrencyRate::Fetcher do
|
|
4
4
|
before do
|
5
5
|
@usd_try = BigDecimal.new("22")
|
6
6
|
@usd_eur = BigDecimal.new("0.8457")
|
7
|
-
@eur_try = @
|
7
|
+
@eur_try = @usd_try / @usd_eur
|
8
8
|
@storage_double = double("storage")
|
9
9
|
@fetcher = CurrencyRate::Fetcher.new(storage: @storage_double)
|
10
10
|
end
|
@@ -14,11 +14,16 @@ RSpec.describe CurrencyRate::Fetcher do
|
|
14
14
|
expect(fetcher.storage).to be_a(CurrencyRate::FileStorage)
|
15
15
|
end
|
16
16
|
|
17
|
+
it "overwrites the default list of fiat exchanges" do
|
18
|
+
fetcher = CurrencyRate::Fetcher.new(fiat_exchanges: ["CurrencyLayer", "Forge", "Fixer"])
|
19
|
+
expect(fetcher.fiat_exchanges).to eq(["CurrencyLayer", "Forge", "Fixer"])
|
20
|
+
end
|
21
|
+
|
17
22
|
describe "#fetch_crypto" do
|
18
23
|
before do
|
19
24
|
@from = "BTC"
|
20
|
-
@to = "
|
21
|
-
@
|
25
|
+
@to = "ETH"
|
26
|
+
@btc_eth = BigDecimal.new("3832.5432")
|
22
27
|
@exchange = "Bitstamp"
|
23
28
|
end
|
24
29
|
|
@@ -30,63 +35,26 @@ RSpec.describe CurrencyRate::Fetcher do
|
|
30
35
|
it { is_expected.to be_nil }
|
31
36
|
end
|
32
37
|
|
33
|
-
context "when pair supported by selected exchange" do
|
38
|
+
context "when pair is supported by selected exchange" do
|
34
39
|
before do
|
35
|
-
allow(@storage_double).to receive(:read).with(@exchange).and_return({ "
|
40
|
+
allow(@storage_double).to receive(:read).with(@exchange).and_return({ "anchor" => "BTC", "ETH" => @btc_eth })
|
36
41
|
end
|
37
42
|
|
38
|
-
it { is_expected.to eq(@
|
43
|
+
it { is_expected.to eq(@btc_eth) }
|
39
44
|
|
40
45
|
it { is_expected.to be_a(BigDecimal) }
|
41
46
|
end
|
42
47
|
|
43
|
-
context "when
|
48
|
+
context "when pair is not supported by selected exchange" do
|
44
49
|
before do
|
45
|
-
allow(@storage_double).to receive(:read).with(@exchange).and_return({ "
|
50
|
+
allow(@storage_double).to receive(:read).with(@exchange).and_return({ "anchor" => "BTC", "XOS" => @btc_eth })
|
51
|
+
allow(@storage_double).to receive(:read).with("Yahoo").and_return(nil)
|
52
|
+
allow(@storage_double).to receive(:read).with("Fixer").and_return(nil)
|
53
|
+
allow(@storage_double).to receive(:read).with("Forge").and_return(nil)
|
46
54
|
end
|
47
55
|
|
48
56
|
it { is_expected.to be_nil }
|
49
57
|
end
|
50
|
-
|
51
|
-
context "when requested fiat currency not supported by selected exchange" do
|
52
|
-
context "when selected exchange supports USD" do
|
53
|
-
before do
|
54
|
-
@btc_usd = @btc_try
|
55
|
-
allow(@storage_double).to receive(:read).with(@exchange).and_return({ "BTC_USD" => @btc_usd })
|
56
|
-
end
|
57
|
-
|
58
|
-
context "when any of fiat exchanges supports rate from USD to requested fiat currency" do
|
59
|
-
before do
|
60
|
-
allow(@fetcher).to receive(:fetch_fiat).with("USD", "TRY").and_return(@usd_try)
|
61
|
-
end
|
62
|
-
|
63
|
-
it { is_expected.to eq(@btc_usd * @usd_try) }
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
context "when when selected exchange doesn't support USD" do
|
68
|
-
before do
|
69
|
-
@btc_eur = @btc_try
|
70
|
-
allow(@storage_double).to receive(:read).with(@exchange).and_return({ "BTC_EUR" => @btc_eur })
|
71
|
-
end
|
72
|
-
|
73
|
-
context "when any of fiat exchanges supports rate for one of supported by selected exchange currency" do
|
74
|
-
before do
|
75
|
-
allow(@fetcher).to receive(:fetch_fiat).with("EUR", "TRY").and_return(@eur_try)
|
76
|
-
end
|
77
|
-
|
78
|
-
it { is_expected.to eq(@btc_eur * @eur_try) }
|
79
|
-
end
|
80
|
-
|
81
|
-
context "when none of fiat exchanges support rate for one of supported by selected exchange currency" do
|
82
|
-
before do
|
83
|
-
allow(@fetcher).to receive(:fetch_fiat).with("EUR", "TRY").and_return(nil)
|
84
|
-
end
|
85
|
-
|
86
|
-
it { is_expected.to be_nil }
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
58
|
end
|
91
59
|
|
92
60
|
describe "#fetch_fiat" do
|
@@ -116,7 +84,6 @@ RSpec.describe CurrencyRate::Fetcher do
|
|
116
84
|
before do
|
117
85
|
allow(@storage_double).to receive(:read).with(@fiat_exchanges.first).and_return({ "anchor" => "EUR", "TRY" => @eur_try })
|
118
86
|
end
|
119
|
-
|
120
87
|
it { is_expected.to eq(@eur_try) }
|
121
88
|
end
|
122
89
|
|
@@ -152,5 +119,6 @@ RSpec.describe CurrencyRate::Fetcher do
|
|
152
119
|
it { is_expected.to eq(@eur_try) }
|
153
120
|
end
|
154
121
|
end
|
122
|
+
|
155
123
|
end
|
156
124
|
end
|