currency-rate 1.0.0 → 1.1.1

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: 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