currency-rate 1.0.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a3676983c63a5f579c68cde5320507f1ae2865e8
4
- data.tar.gz: da1012848a17db8f389d10201d26e66aed2ac93b
3
+ metadata.gz: 9b4f9d88dac87ee1c8fec51965ae55a35f3b36df
4
+ data.tar.gz: 7b34cf4aeb7eca8ccfffe8aaa992eb8a267e173c
5
5
  SHA512:
6
- metadata.gz: d5b015e4587fee54369ecaa39345485f2c9acdb81581fcd4f62655ec235472ef3158dd774c52a5f66b8dadcc2e49206e8c1036017c0421d6ac591aa7785448dd
7
- data.tar.gz: 707067690373ce67e6cb2cd6697ac1271e7f615ff533bb73d25c196fcc987054258092524621a9773df62043408107f2b9c598da95da91352c32664b674a126f
6
+ metadata.gz: f77e137eeac0e9b41feb9072a787c37153fa825a8bcd2f5ae63c596b2592bc884a90cda9ad83dd25cbd553de9d55091c9b0e4273efecd7b4e37e9a86f11c85a4
7
+ data.tar.gz: a910962dcd6b330e4349ca99aca546c916d70c52d7021c2e40c007e96285a8f3ea3d54dd8a24fca90a03a07db26ab3d0ef4ffd60489d1a7d55c6a448e25eb7b9
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.1
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: currency-rate 1.0.0 ruby lib
5
+ # stub: currency-rate 1.1.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "currency-rate".freeze
9
- s.version = "1.0.0"
9
+ s.version = "1.1.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Roman Snitko".freeze]
14
- s.date = "2017-10-30"
14
+ s.date = "2017-11-13"
15
15
  s.description = "Fetches exchange rates from various sources and does the conversion".freeze
16
16
  s.email = "roman.snitko@gmail.com".freeze
17
17
  s.extra_rdoc_files = [
@@ -38,6 +38,7 @@ Gem::Specification.new do |s|
38
38
  "lib/adapters/crypto/kraken_adapter.rb",
39
39
  "lib/adapters/crypto/localbitcoins_adapter.rb",
40
40
  "lib/adapters/crypto/okcoin_adapter.rb",
41
+ "lib/adapters/fiat/currency_layer_adapter.rb",
41
42
  "lib/adapters/fiat/fixer_adapter.rb",
42
43
  "lib/adapters/fiat/forge_adapter.rb",
43
44
  "lib/adapters/fiat/yahoo_adapter.rb",
@@ -53,6 +54,7 @@ Gem::Specification.new do |s|
53
54
  "spec/fixtures/adapters/btc_china_adapter.yml",
54
55
  "spec/fixtures/adapters/btce_adapter.yml",
55
56
  "spec/fixtures/adapters/coinbase_adapter.yml",
57
+ "spec/fixtures/adapters/currency_layer_adapter.yml",
56
58
  "spec/fixtures/adapters/fixer_adapter.yml",
57
59
  "spec/fixtures/adapters/forge_adapter.yml",
58
60
  "spec/fixtures/adapters/huobi_adapter.yml",
@@ -64,6 +66,7 @@ Gem::Specification.new do |s|
64
66
  "spec/fixtures/adapters/normalized/btc_china_adapter.yml",
65
67
  "spec/fixtures/adapters/normalized/btce_adapter.yml",
66
68
  "spec/fixtures/adapters/normalized/coinbase_adapter.yml",
69
+ "spec/fixtures/adapters/normalized/currency_layer_adapter.yml",
67
70
  "spec/fixtures/adapters/normalized/fixer_adapter.yml",
68
71
  "spec/fixtures/adapters/normalized/forge_adapter.yml",
69
72
  "spec/fixtures/adapters/normalized/huobi_adapter.yml",
@@ -84,6 +87,7 @@ Gem::Specification.new do |s|
84
87
  "spec/lib/adapters/crypto/kraken_adapter_spec.rb",
85
88
  "spec/lib/adapters/crypto/localbitcoins_adapter_spec.rb",
86
89
  "spec/lib/adapters/crypto/okcoin_adapter_spec.rb",
90
+ "spec/lib/adapters/fiat/currency_layer_adapter_spec.rb",
87
91
  "spec/lib/adapters/fiat/fixer_adapter_spec.rb",
88
92
  "spec/lib/adapters/fiat/forge_adapter_spec.rb",
89
93
  "spec/lib/adapters/fiat/yahoo_adapter_spec.rb",
@@ -50,7 +50,12 @@ module CurrencyRate
50
50
  fetch_url = url
51
51
  if self.class::API_KEY_PARAM
52
52
  api_key = CurrencyRate.configuration.api_keys[self.name]
53
- fetch_url << "&#{self.class::API_KEY_PARAM}=#{api_key}" if api_key
53
+ if api_key.nil?
54
+ CurrencyRate.logger.error("API key for #{self.name} not defined")
55
+ return nil
56
+ end
57
+ param_symbol = fetch_url.split("/").last.include?("?") ? "&" : "?"
58
+ fetch_url << "#{param_symbol}#{self.class::API_KEY_PARAM}=#{api_key}" if api_key
54
59
  end
55
60
  http_client = HTTP.timeout(connect: 4, read: 4)
56
61
  JSON.parse(http_client.get(fetch_url).to_s)
@@ -0,0 +1,30 @@
1
+ module CurrencyRate
2
+ class CurrencyLayerAdapter < Adapter
3
+ # No need to use it for fetching, just additional information about supported currencies
4
+ SUPPORTED_CURRENCIES = %w(AED AFN ALL AMD ANG AOA ARS AUD AWG AZN BAM BBD BDT BGN
5
+ BHD BIF BMD BND BOB BRL BSD BTC BTN BWP BYN BYR BZD CAD
6
+ CDF CHF CLF CLP CNY COP CRC CUC CUP CVE CZK DJF DKK DOP
7
+ DZD EGP ERN ETB EUR FJD FKP GBP GEL GGP GHS GIP GMD GNF
8
+ GTQ GYD HKD HNL HRK HTG HUF IDR ILS IMP INR IQD IRR ISK
9
+ JEP JMD JOD JPY KES KGS KHR KMF KPW KRW KWD KYD KZT LAK
10
+ LBP LKR LRD LSL LTL LVL LYD MAD MDL MGA MKD MMK MNT MOP
11
+ MRO MUR MVR MWK MXN MYR MZN NAD NGN NIO NOK NPR NZD OMR
12
+ PAB PEN PGK PHP PKR PLN PYG QAR RON RSD RUB RWF SAR SBD
13
+ SCR SDG SEK SGD SHP SLL SOS SRD STD SVC SYP SZL THB TJS
14
+ TMT TND TOP TRY TTD TWD TZS UAH UGX USD UYU UZS VEF VND
15
+ VUV WST XAF XAG XAU XCD XDR XOF XPF YER ZAR ZMK ZMW ZWL)
16
+
17
+ ANCHOR_CURRENCY = "USD"
18
+ FETCH_URL = "http://www.apilayer.net/api/live"
19
+ API_KEY_PARAM = "access_key"
20
+
21
+ def normalize(data)
22
+ return nil unless super
23
+ rates = { "anchor" => self.class::ANCHOR_CURRENCY }
24
+ data["quotes"].each do |key, value|
25
+ rates[key.sub(self.class::ANCHOR_CURRENCY, "")] = BigDecimal.new(value.to_s)
26
+ end
27
+ rates
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,174 @@
1
+ success: true
2
+ terms: https://currencylayer.com/terms
3
+ privacy: https://currencylayer.com/privacy
4
+ timestamp: 1510576149
5
+ source: USD
6
+ quotes:
7
+ USDAED: 3.672899
8
+ USDAFN: 68.559998
9
+ USDALL: 114.239998
10
+ USDAMD: 487.070007
11
+ USDANG: 1.779787
12
+ USDAOA: 165.097026
13
+ USDARS: 17.478958
14
+ USDAUD: 1.307606
15
+ USDAWG: 1.78
16
+ USDAZN: 1.6997
17
+ USDBAM: 1.680301
18
+ USDBBD: 2
19
+ USDBDT: 83.139999
20
+ USDBGN: 1.678295
21
+ USDBHD: 0.377704
22
+ USDBIF: 1742.97998
23
+ USDBMD: 1
24
+ USDBND: 1.360602
25
+ USDBOB: 6.859658
26
+ USDBRL: 3.285801
27
+ USDBSD: 1
28
+ USDBTC: 0.000153
29
+ USDBTN: 64.949997
30
+ USDBWP: 10.633303
31
+ USDBYN: 1.969768
32
+ USDBYR: 19600
33
+ USDBZD: 1.997703
34
+ USDCAD: 1.26981
35
+ USDCDF: 1565.502481
36
+ USDCHF: 0.99374
37
+ USDCLF: 0.02351
38
+ USDCLP: 632.960022
39
+ USDCNY: 6.639197
40
+ USDCOP: 3007.5
41
+ USDCRC: 566.400024
42
+ USDCUC: 1
43
+ USDCUP: 26.5
44
+ USDCVE: 94.589996
45
+ USDCZK: 21.927499
46
+ USDDJF: 176.830002
47
+ USDDKK: 6.38358
48
+ USDDOP: 47.299999
49
+ USDDZD: 114.920998
50
+ USDEGP: 17.64496
51
+ USDERN: 15.279785
52
+ USDETB: 27.084299
53
+ USDEUR: 0.857399
54
+ USDFJD: 2.079752
55
+ USDFKP: 0.761599
56
+ USDGBP: 0.76409
57
+ USDGEL: 2.639904
58
+ USDGGP: 0.763974
59
+ USDGHS: 4.448505
60
+ USDGIP: 0.761801
61
+ USDGMD: 46.869999
62
+ USDGNF: 8995.00018
63
+ USDGTQ: 7.341983
64
+ USDGYD: 204.399994
65
+ USDHKD: 7.79966
66
+ USDHNL: 23.500999
67
+ USDHRK: 6.457401
68
+ USDHTG: 61.959999
69
+ USDHUF: 267.600006
70
+ USDIDR: 13550
71
+ USDILS: 3.540102
72
+ USDIMP: 0.763974
73
+ USDINR: 65.418999
74
+ USDIQD: 1167
75
+ USDIRR: 35248.999607
76
+ USDISK: 103.489998
77
+ USDJEP: 0.763974
78
+ USDJMD: 125.940002
79
+ USDJOD: 0.707504
80
+ USDJPY: 113.294998
81
+ USDKES: 103.349998
82
+ USDKGS: 69.723999
83
+ USDKHR: 4035.000398
84
+ USDKMF: 423.380005
85
+ USDKPW: 899.999782
86
+ USDKRW: 1117.569946
87
+ USDKWD: 0.302197
88
+ USDKYD: 0.82027
89
+ USDKZT: 332.959991
90
+ USDLAK: 8301.999725
91
+ USDLBP: 1505.400024
92
+ USDLKR: 153.600006
93
+ USDLRD: 122.679782
94
+ USDLSL: 14.364981
95
+ USDLTL: 3.048703
96
+ USDLVL: 0.62055
97
+ USDLYD: 1.374302
98
+ USDMAD: 9.485697
99
+ USDMDL: 17.527008
100
+ USDMGA: 3159.999975
101
+ USDMKD: 52.529999
102
+ USDMMK: 1363.000068
103
+ USDMNT: 2445.999784
104
+ USDMOP: 8.033203
105
+ USDMRO: 351.000172
106
+ USDMUR: 34.229818
107
+ USDMVR: 15.570375
108
+ USDMWK: 716.349976
109
+ USDMXN: 19.156401
110
+ USDMYR: 4.190017
111
+ USDMZN: 60.290001
112
+ USDNAD: 14.508944
113
+ USDNGN: 351.999683
114
+ USDNIO: 30.593497
115
+ USDNOK: 8.13997
116
+ USDNPR: 103.550003
117
+ USDNZD: 1.446698
118
+ USDOMR: 0.384799
119
+ USDPAB: 1
120
+ USDPEN: 3.2405
121
+ USDPGK: 3.187302
122
+ USDPHP: 51.200001
123
+ USDPKR: 105.330002
124
+ USDPLN: 3.632982
125
+ USDPYG: 5650.299805
126
+ USDQAR: 3.8048
127
+ USDRON: 3.991896
128
+ USDRSD: 101.433197
129
+ USDRUB: 59.377899
130
+ USDRWF: 832.289978
131
+ USDSAR: 3.750097
132
+ USDSBD: 7.797797
133
+ USDSCR: 13.597994
134
+ USDSDG: 6.659702
135
+ USDSEK: 8.37478
136
+ USDSGD: 1.36123
137
+ USDSHP: 0.761799
138
+ USDSLL: 7619.999811
139
+ USDSOS: 556.999519
140
+ USDSRD: 7.379938
141
+ USDSTD: 21017.400391
142
+ USDSVC: 8.749931
143
+ USDSYP: 514.97998
144
+ USDSZL: 14.520974
145
+ USDTHB: 33.049999
146
+ USDTJS: 8.805597
147
+ USDTMT: 3.41
148
+ USDTND: 2.515011
149
+ USDTOP: 2.272801
150
+ USDTRY: 3.877202
151
+ USDTTD: 6.741992
152
+ USDTWD: 30.176001
153
+ USDTZS: 2236.999921
154
+ USDUAH: 26.469999
155
+ USDUGX: 3644.999878
156
+ USDUSD: 1
157
+ USDUYU: 29.169966
158
+ USDUZS: 8049.999597
159
+ USDVEF: 9.975012
160
+ USDVND: 22710
161
+ USDVUV: 106.010002
162
+ USDWST: 2.5708
163
+ USDXAF: 562.280029
164
+ USDXAG: 0.059138
165
+ USDXAU: 0.000782
166
+ USDXCD: 2.702368
167
+ USDXDR: 0.712515
168
+ USDXOF: 562.570007
169
+ USDXPF: 102.309777
170
+ USDYER: 249.949997
171
+ USDZAR: 14.523701
172
+ USDZMK: 9001.198647
173
+ USDZMW: 9.88006
174
+ USDZWL: 322.355011
@@ -0,0 +1,169 @@
1
+ anchor: USD
2
+ AED: 3.672899
3
+ AFN: 68.559998
4
+ ALL: 114.239998
5
+ AMD: 487.070007
6
+ ANG: 1.779787
7
+ AOA: 165.097026
8
+ ARS: 17.478958
9
+ AUD: 1.307606
10
+ AWG: 1.78
11
+ AZN: 1.6997
12
+ BAM: 1.680301
13
+ BBD: 2
14
+ BDT: 83.139999
15
+ BGN: 1.678295
16
+ BHD: 0.377704
17
+ BIF: 1742.97998
18
+ BMD: 1
19
+ BND: 1.360602
20
+ BOB: 6.859658
21
+ BRL: 3.285801
22
+ BSD: 1
23
+ BTC: 0.000153
24
+ BTN: 64.949997
25
+ BWP: 10.633303
26
+ BYN: 1.969768
27
+ BYR: 19600
28
+ BZD: 1.997703
29
+ CAD: 1.26981
30
+ CDF: 1565.502481
31
+ CHF: 0.99374
32
+ CLF: 0.02351
33
+ CLP: 632.960022
34
+ CNY: 6.639197
35
+ COP: 3007.5
36
+ CRC: 566.400024
37
+ CUC: 1
38
+ CUP: 26.5
39
+ CVE: 94.589996
40
+ CZK: 21.927499
41
+ DJF: 176.830002
42
+ DKK: 6.38358
43
+ DOP: 47.299999
44
+ DZD: 114.920998
45
+ EGP: 17.64496
46
+ ERN: 15.279785
47
+ ETB: 27.084299
48
+ EUR: 0.857399
49
+ FJD: 2.079752
50
+ FKP: 0.761599
51
+ GBP: 0.76409
52
+ GEL: 2.639904
53
+ GGP: 0.763974
54
+ GHS: 4.448505
55
+ GIP: 0.761801
56
+ GMD: 46.869999
57
+ GNF: 8995.00018
58
+ GTQ: 7.341983
59
+ GYD: 204.399994
60
+ HKD: 7.79966
61
+ HNL: 23.500999
62
+ HRK: 6.457401
63
+ HTG: 61.959999
64
+ HUF: 267.600006
65
+ IDR: 13550
66
+ ILS: 3.540102
67
+ IMP: 0.763974
68
+ INR: 65.418999
69
+ IQD: 1167
70
+ IRR: 35248.999607
71
+ ISK: 103.489998
72
+ JEP: 0.763974
73
+ JMD: 125.940002
74
+ JOD: 0.707504
75
+ JPY: 113.294998
76
+ KES: 103.349998
77
+ KGS: 69.723999
78
+ KHR: 4035.000398
79
+ KMF: 423.380005
80
+ KPW: 899.999782
81
+ KRW: 1117.569946
82
+ KWD: 0.302197
83
+ KYD: 0.82027
84
+ KZT: 332.959991
85
+ LAK: 8301.999725
86
+ LBP: 1505.400024
87
+ LKR: 153.600006
88
+ LRD: 122.679782
89
+ LSL: 14.364981
90
+ LTL: 3.048703
91
+ LVL: 0.62055
92
+ LYD: 1.374302
93
+ MAD: 9.485697
94
+ MDL: 17.527008
95
+ MGA: 3159.999975
96
+ MKD: 52.529999
97
+ MMK: 1363.000068
98
+ MNT: 2445.999784
99
+ MOP: 8.033203
100
+ MRO: 351.000172
101
+ MUR: 34.229818
102
+ MVR: 15.570375
103
+ MWK: 716.349976
104
+ MXN: 19.156401
105
+ MYR: 4.190017
106
+ MZN: 60.290001
107
+ NAD: 14.508944
108
+ NGN: 351.999683
109
+ NIO: 30.593497
110
+ NOK: 8.13997
111
+ NPR: 103.550003
112
+ NZD: 1.446698
113
+ OMR: 0.384799
114
+ PAB: 1
115
+ PEN: 3.2405
116
+ PGK: 3.187302
117
+ PHP: 51.200001
118
+ PKR: 105.330002
119
+ PLN: 3.632982
120
+ PYG: 5650.299805
121
+ QAR: 3.8048
122
+ RON: 3.991896
123
+ RSD: 101.433197
124
+ RUB: 59.377899
125
+ RWF: 832.289978
126
+ SAR: 3.750097
127
+ SBD: 7.797797
128
+ SCR: 13.597994
129
+ SDG: 6.659702
130
+ SEK: 8.37478
131
+ SGD: 1.36123
132
+ SHP: 0.761799
133
+ SLL: 7619.999811
134
+ SOS: 556.999519
135
+ SRD: 7.379938
136
+ STD: 21017.400391
137
+ SVC: 8.749931
138
+ SYP: 514.97998
139
+ SZL: 14.520974
140
+ THB: 33.049999
141
+ TJS: 8.805597
142
+ TMT: 3.41
143
+ TND: 2.515011
144
+ TOP: 2.272801
145
+ TRY: 3.877202
146
+ TTD: 6.741992
147
+ TWD: 30.176001
148
+ TZS: 2236.999921
149
+ UAH: 26.469999
150
+ UGX: 3644.999878
151
+ USD: 1
152
+ UYU: 29.169966
153
+ UZS: 8049.999597
154
+ VEF: 9.975012
155
+ VND: 22710
156
+ VUV: 106.010002
157
+ WST: 2.5708
158
+ XAF: 562.280029
159
+ XAG: 0.059138
160
+ XAU: 0.000782
161
+ XCD: 2.702368
162
+ XDR: 0.712515
163
+ XOF: 562.570007
164
+ XPF: 102.309777
165
+ YER: 249.949997
166
+ ZAR: 14.523701
167
+ ZMK: 9001.198647
168
+ ZMW: 9.88006
169
+ ZWL: 322.355011
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe CurrencyRate::CurrencyLayerAdapter do
4
+ before(:all) { @data, @normalized = data_for :currency_layer }
5
+
6
+ before { stub_request(:get, /apilayer/).to_return(body: @data.to_json) }
7
+
8
+ before { @adapter = CurrencyRate::CurrencyLayerAdapter.instance }
9
+
10
+ describe "#normalize" do
11
+ it "brings data to canonical form" do
12
+ expect(@adapter.normalize(@data)).to eq(@normalized)
13
+ end
14
+ end
15
+
16
+ describe "#exchange_data" do
17
+ context "when api_key not defined" do
18
+ it "returns nil" do
19
+ expect(@adapter.exchange_data).to be_nil
20
+ end
21
+ end
22
+ end
23
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: currency-rate
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Snitko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-31 00:00:00.000000000 Z
11
+ date: 2017-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http
@@ -107,6 +107,7 @@ files:
107
107
  - lib/adapters/crypto/kraken_adapter.rb
108
108
  - lib/adapters/crypto/localbitcoins_adapter.rb
109
109
  - lib/adapters/crypto/okcoin_adapter.rb
110
+ - lib/adapters/fiat/currency_layer_adapter.rb
110
111
  - lib/adapters/fiat/fixer_adapter.rb
111
112
  - lib/adapters/fiat/forge_adapter.rb
112
113
  - lib/adapters/fiat/yahoo_adapter.rb
@@ -122,6 +123,7 @@ files:
122
123
  - spec/fixtures/adapters/btc_china_adapter.yml
123
124
  - spec/fixtures/adapters/btce_adapter.yml
124
125
  - spec/fixtures/adapters/coinbase_adapter.yml
126
+ - spec/fixtures/adapters/currency_layer_adapter.yml
125
127
  - spec/fixtures/adapters/fixer_adapter.yml
126
128
  - spec/fixtures/adapters/forge_adapter.yml
127
129
  - spec/fixtures/adapters/huobi_adapter.yml
@@ -133,6 +135,7 @@ files:
133
135
  - spec/fixtures/adapters/normalized/btc_china_adapter.yml
134
136
  - spec/fixtures/adapters/normalized/btce_adapter.yml
135
137
  - spec/fixtures/adapters/normalized/coinbase_adapter.yml
138
+ - spec/fixtures/adapters/normalized/currency_layer_adapter.yml
136
139
  - spec/fixtures/adapters/normalized/fixer_adapter.yml
137
140
  - spec/fixtures/adapters/normalized/forge_adapter.yml
138
141
  - spec/fixtures/adapters/normalized/huobi_adapter.yml
@@ -153,6 +156,7 @@ files:
153
156
  - spec/lib/adapters/crypto/kraken_adapter_spec.rb
154
157
  - spec/lib/adapters/crypto/localbitcoins_adapter_spec.rb
155
158
  - spec/lib/adapters/crypto/okcoin_adapter_spec.rb
159
+ - spec/lib/adapters/fiat/currency_layer_adapter_spec.rb
156
160
  - spec/lib/adapters/fiat/fixer_adapter_spec.rb
157
161
  - spec/lib/adapters/fiat/forge_adapter_spec.rb
158
162
  - spec/lib/adapters/fiat/yahoo_adapter_spec.rb