money-currencylayer-bank 0.4.0 → 0.4.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 +4 -4
- data/README.md +6 -7
- data/lib/money/bank/currencylayer_bank.rb +13 -3
- data/test/TEST_ACCESS_KEY +1 -0
- data/test/currencylayer_bank_test.rb +10 -6
- data/test/test_helper.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c5a08a77bda99cbfcd572fbd6aec7d24a30e4ea
|
4
|
+
data.tar.gz: 17c697f0262bdedadf2c5bb9019364b10b3b8417
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8afffad25d2b2fe4ae7253d903487253fb838b3a8fe260dda2f2160d80cc896102c4afe1654ca0436e0785ab90178832048088d66761d6c2af1c7a5c6dc8a475
|
7
|
+
data.tar.gz: 033896568dfbe42df8e55042a7255390a2ed93a7257397e04cedd5d9357c2663f130cb5840193f24db752e706f3585e56276400b62574854bff7ee13d65907e2
|
data/README.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Money Currencylayer Bank
|
2
2
|
|
3
|
+
[](https://rubygems.org/gems/money-currencylayer-bank)
|
4
|
+
[](https://travis-ci.org/phlegx/money-currencylayer-bank)
|
5
|
+
[](https://codeclimate.com/github/phlegx/money-currencylayer-bank)
|
6
|
+
[](http://inch-ci.org/github/phlegx/money-currencylayer-bank)
|
7
|
+
[](http://opensource.org/licenses/MIT)
|
8
|
+
|
3
9
|
A gem that calculates the exchange rate using published rates from
|
4
10
|
[currencylayer.com](https://currencylayer.com/)
|
5
11
|
|
@@ -99,10 +105,3 @@ bundle exec rake
|
|
99
105
|
The MIT License
|
100
106
|
|
101
107
|
Copyright (c) 2015 Phlegx Systems OG
|
102
|
-
|
103
|
-
---
|
104
|
-
[](https://rubygems.org/gems/money-currencylayer-bank)
|
105
|
-
[](https://travis-ci.org/phlegx/money-currencylayer-bank)
|
106
|
-
[](https://codeclimate.com/github/phlegx/money-currencylayer-bank)
|
107
|
-
[](http://inch-ci.org/github/phlegx/money-currencylayer-bank)
|
108
|
-
[](http://opensource.org/licenses/MIT)
|
@@ -23,7 +23,8 @@ class Money
|
|
23
23
|
CL_SOURCE = 'USD'
|
24
24
|
|
25
25
|
# Use https to fetch rates from CurrencylayerBank
|
26
|
-
# CurrencylayerBank only allows http as connection
|
26
|
+
# CurrencylayerBank only allows http as connection
|
27
|
+
# for the free plan users.
|
27
28
|
attr_accessor :secure_connection
|
28
29
|
|
29
30
|
# API must have a valid access_key
|
@@ -42,7 +43,8 @@ class Money
|
|
42
43
|
attr_reader :ttl_in_seconds
|
43
44
|
|
44
45
|
# Set the base currency for all rates. By default, USD is used.
|
45
|
-
# CurrencylayerBank only allows USD as base currency
|
46
|
+
# CurrencylayerBank only allows USD as base currency
|
47
|
+
# for the free plan users.
|
46
48
|
#
|
47
49
|
# @example
|
48
50
|
# source = 'USD'
|
@@ -178,7 +180,15 @@ class Money
|
|
178
180
|
# Get expire rates, first from cache and then from url
|
179
181
|
# @return [Hash] key is country code (ISO 3166-1 alpha-3) value Float
|
180
182
|
def exchange_rates
|
181
|
-
|
183
|
+
begin
|
184
|
+
doc = JSON.parse(read_from_cache.to_s)
|
185
|
+
rescue JSON::ParserError
|
186
|
+
begin
|
187
|
+
doc = JSON.parse(read_from_url)
|
188
|
+
rescue JSON::ParserError
|
189
|
+
doc = { 'quotes' => {} }
|
190
|
+
end
|
191
|
+
end
|
182
192
|
@cl_rates = doc['quotes']
|
183
193
|
end
|
184
194
|
|
@@ -0,0 +1 @@
|
|
1
|
+
your access_key from https://currencylayer.com/product
|
@@ -65,10 +65,10 @@ describe Money::Bank::CurrencylayerBank do
|
|
65
65
|
before do
|
66
66
|
subject.cache = nil
|
67
67
|
subject.access_key = TEST_ACCESS_KEY
|
68
|
+
stub(subject).read_from_url { File.read cache_path }
|
68
69
|
end
|
69
70
|
|
70
71
|
it 'should get from url' do
|
71
|
-
stub(OpenURI::OpenRead).open(url) { File.read cache_path }
|
72
72
|
subject.update_rates
|
73
73
|
subject.cl_rates.wont_be_empty
|
74
74
|
end
|
@@ -82,19 +82,22 @@ describe Money::Bank::CurrencylayerBank do
|
|
82
82
|
it "should use the non-secure http url if secure_connection isn't set" do
|
83
83
|
subject.secure_connection = nil
|
84
84
|
subject.access_key = TEST_ACCESS_KEY
|
85
|
-
subject.source_url.must_equal "#{url}?source=#{source}&
|
85
|
+
subject.source_url.must_equal "#{url}?source=#{source}&"\
|
86
|
+
"access_key=#{TEST_ACCESS_KEY}"
|
86
87
|
end
|
87
88
|
|
88
89
|
it 'should use the non-secure http url if secure_connection is false' do
|
89
90
|
subject.secure_connection = false
|
90
91
|
subject.access_key = TEST_ACCESS_KEY
|
91
|
-
subject.source_url.must_equal "#{url}?source=#{source}&
|
92
|
+
subject.source_url.must_equal "#{url}?source=#{source}&"\
|
93
|
+
"access_key=#{TEST_ACCESS_KEY}"
|
92
94
|
end
|
93
95
|
|
94
96
|
it 'should use the secure https url if secure_connection is set to true' do
|
95
97
|
subject.secure_connection = true
|
96
98
|
subject.access_key = TEST_ACCESS_KEY
|
97
|
-
subject.source_url.must_equal "#{secure_url}?source=#{source}&
|
99
|
+
subject.source_url.must_equal "#{secure_url}?source=#{source}&"\
|
100
|
+
"access_key=#{TEST_ACCESS_KEY}"
|
98
101
|
subject.source_url.must_include 'https://'
|
99
102
|
end
|
100
103
|
end
|
@@ -103,10 +106,10 @@ describe Money::Bank::CurrencylayerBank do
|
|
103
106
|
before do
|
104
107
|
subject.cache = "space_dir#{rand(999_999_999)}/out_space_file.json"
|
105
108
|
subject.access_key = TEST_ACCESS_KEY
|
109
|
+
stub(subject).read_from_url { File.read cache_path }
|
106
110
|
end
|
107
111
|
|
108
112
|
it 'should get from url' do
|
109
|
-
stub(OpenURI::OpenRead).open(url) { File.read cache_path }
|
110
113
|
subject.update_rates
|
111
114
|
subject.cl_rates.wont_be_empty
|
112
115
|
end
|
@@ -149,6 +152,7 @@ describe Money::Bank::CurrencylayerBank do
|
|
149
152
|
before do
|
150
153
|
subject.access_key = TEST_ACCESS_KEY
|
151
154
|
subject.cache = cache_path
|
155
|
+
stub(subject).read_from_url { File.read cache_path }
|
152
156
|
subject.update_rates
|
153
157
|
end
|
154
158
|
|
@@ -211,7 +215,7 @@ describe Money::Bank::CurrencylayerBank do
|
|
211
215
|
before do
|
212
216
|
subject.access_key = TEST_ACCESS_KEY
|
213
217
|
subject.cache = temp_cache_path
|
214
|
-
stub(
|
218
|
+
stub(subject).read_from_url { File.read cache_path }
|
215
219
|
subject.save_rates
|
216
220
|
end
|
217
221
|
|
data/test/test_helper.rb
CHANGED
@@ -6,7 +6,7 @@ require 'monetize'
|
|
6
6
|
require 'timecop'
|
7
7
|
require 'pry'
|
8
8
|
|
9
|
-
TEST_ACCESS_KEY_PATH = File.join(File.dirname(__FILE__), '
|
9
|
+
TEST_ACCESS_KEY_PATH = File.join(File.dirname(__FILE__), 'TEST_ACCESS_KEY')
|
10
10
|
TEST_ACCESS_KEY = ENV['TEST_ACCESS_KEY'] || File.read(TEST_ACCESS_KEY_PATH)
|
11
11
|
|
12
12
|
if TEST_ACCESS_KEY.nil? || TEST_ACCESS_KEY.empty?
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: money-currencylayer-bank
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Egon Zemmer
|
@@ -176,6 +176,7 @@ files:
|
|
176
176
|
- LICENSE
|
177
177
|
- README.md
|
178
178
|
- lib/money/bank/currencylayer_bank.rb
|
179
|
+
- test/TEST_ACCESS_KEY
|
179
180
|
- test/currencylayer_bank_test.rb
|
180
181
|
- test/live.json
|
181
182
|
- test/test_helper.rb
|