russian_central_bank 0.2.0 → 0.2.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 +7 -0
- data/lib/russian_central_bank.rb +6 -2
- data/russian_central_bank.gemspec +1 -1
- data/spec/russian_central_bank_spec.rb +25 -9
- metadata +31 -44
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: dbe7d78854c964ee285030b941ecf65ce0818d3d
|
4
|
+
data.tar.gz: 2543a1a59cbf247955bf79359b2b33c4de65c99d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2f521e9e52fed5250ee5a6d63e067fa04d683c5d0936b359b9b4ee315ba975b68774a1a78bc3eede6ba763ab72ab03cb06b90520b8101dd5284540e5f1cad6a7
|
7
|
+
data.tar.gz: 0beb519a6f5ca257034e5deb6c2053c3de229b64cfba6e2fa4fc9351bf7494a1c4a7295dfd07ed7fbe93c0466eee9274f6063a018dbf4d84775bd91c3ae972a9
|
data/lib/russian_central_bank.rb
CHANGED
@@ -26,6 +26,7 @@ class Money
|
|
26
26
|
|
27
27
|
def set_rate(from, to, rate)
|
28
28
|
@rates[rate_key_for(from, to)] = rate
|
29
|
+
@rates[rate_key_for(to, from)] = 1.0 / rate
|
29
30
|
end
|
30
31
|
|
31
32
|
def get_rate from, to
|
@@ -41,16 +42,19 @@ class Money
|
|
41
42
|
end
|
42
43
|
|
43
44
|
def exchange_rates(date)
|
44
|
-
client = Savon::Client.new(wsdl: CBR_SERVICE_URL)
|
45
|
+
client = Savon::Client.new(wsdl: CBR_SERVICE_URL, log: false, log_level: :error)
|
45
46
|
response = client.call(:get_curs_on_date, message: { 'On_date' => date.strftime('%Y-%m-%dT%H:%M:%S') })
|
46
47
|
response.body[:get_curs_on_date_response][:get_curs_on_date_result][:diffgram][:valute_data][:valute_curs_on_date]
|
47
48
|
end
|
48
49
|
|
49
50
|
def update_parsed_rates rates
|
51
|
+
local_currencies = Money::Currency.table.map { |currency| currency.last[:iso_code] }
|
50
52
|
add_rate('RUB', 'RUB', 1)
|
51
53
|
rates.each do |rate|
|
52
54
|
begin
|
53
|
-
|
55
|
+
if local_currencies.include? rate[:vch_code]
|
56
|
+
add_rate('RUB', rate[:vch_code], 1/ (rate[:vcurs].to_f / rate[:vnom].to_i))
|
57
|
+
end
|
54
58
|
rescue Money::Currency::UnknownCurrency
|
55
59
|
end
|
56
60
|
end
|
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'russian_central_bank'
|
7
|
-
spec.version = '0.2.
|
7
|
+
spec.version = '0.2.1'
|
8
8
|
spec.authors = ['Ramil Mustafin']
|
9
9
|
spec.email = ['rommel.rmm@gmail.com']
|
10
10
|
spec.description = 'RussianCentralBank extends Money::Bank::VariableExchange and gives you access to the Central Bank of Russia currency exchange rates.'
|
@@ -35,18 +35,34 @@ describe 'RussianCentralBank' do
|
|
35
35
|
end
|
36
36
|
|
37
37
|
describe '#get_rate' do
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
38
|
+
context 'getting dicrect rates' do
|
39
|
+
before do
|
40
|
+
@bank.flush_rates
|
41
|
+
@bank.add_rate('RUB', 'USD', 0.03)
|
42
|
+
@bank.add_rate('RUB', 'GBP', 0.02)
|
43
|
+
end
|
43
44
|
|
44
|
-
|
45
|
-
|
45
|
+
it 'should get rate from @rates' do
|
46
|
+
@bank.get_rate('RUB', 'USD').should == 0.03
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should calculate indirect rates' do
|
50
|
+
@bank.get_rate('USD', 'GBP').should == 0.6666666666666667
|
51
|
+
end
|
46
52
|
end
|
47
53
|
|
48
|
-
|
49
|
-
|
54
|
+
context 'getting indirect rate' do
|
55
|
+
let(:indirect_rate) { 4 }
|
56
|
+
|
57
|
+
before do
|
58
|
+
@bank.flush_rates
|
59
|
+
@bank.add_rate('RUB', 'USD', 123)
|
60
|
+
@bank.add_rate('USD', 'RUB', indirect_rate)
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'gets indirect rate from the last set' do
|
64
|
+
expect(@bank.get_rate('RUB', 'USD')).to eq(1.0 / indirect_rate)
|
65
|
+
end
|
50
66
|
end
|
51
67
|
end
|
52
68
|
end
|
metadata
CHANGED
@@ -1,96 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: russian_central_bank
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.2.0
|
4
|
+
version: 0.2.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ramil Mustafin
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-12-16 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
|
-
version_requirements: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '1.3'
|
22
15
|
requirement: !ruby/object:Gem::Requirement
|
23
|
-
none: false
|
24
16
|
requirements:
|
25
17
|
- - ~>
|
26
18
|
- !ruby/object:Gem::Version
|
27
19
|
version: '1.3'
|
28
20
|
type: :development
|
29
21
|
prerelease: false
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: rake
|
32
22
|
version_requirements: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
23
|
requirements:
|
35
|
-
- -
|
24
|
+
- - ~>
|
36
25
|
- !ruby/object:Gem::Version
|
37
|
-
version: '
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
38
29
|
requirement: !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
30
|
requirements:
|
41
|
-
- -
|
31
|
+
- - '>='
|
42
32
|
- !ruby/object:Gem::Version
|
43
33
|
version: '0'
|
44
34
|
type: :development
|
45
35
|
prerelease: false
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: rspec
|
48
36
|
version_requirements: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
37
|
requirements:
|
51
|
-
- -
|
38
|
+
- - '>='
|
52
39
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
54
43
|
requirement: !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
44
|
requirements:
|
57
|
-
- -
|
45
|
+
- - '>='
|
58
46
|
- !ruby/object:Gem::Version
|
59
47
|
version: 2.0.0
|
60
48
|
type: :development
|
61
49
|
prerelease: false
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: money
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
51
|
requirements:
|
67
|
-
- -
|
52
|
+
- - '>='
|
68
53
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
54
|
+
version: 2.0.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: money
|
70
57
|
requirement: !ruby/object:Gem::Requirement
|
71
|
-
none: false
|
72
58
|
requirements:
|
73
|
-
- -
|
59
|
+
- - '>='
|
74
60
|
- !ruby/object:Gem::Version
|
75
61
|
version: '5.0'
|
76
62
|
type: :runtime
|
77
63
|
prerelease: false
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: savon
|
80
64
|
version_requirements: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
65
|
requirements:
|
83
|
-
- -
|
66
|
+
- - '>='
|
84
67
|
- !ruby/object:Gem::Version
|
85
|
-
version: '
|
68
|
+
version: '5.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: savon
|
86
71
|
requirement: !ruby/object:Gem::Requirement
|
87
|
-
none: false
|
88
72
|
requirements:
|
89
73
|
- - ~>
|
90
74
|
- !ruby/object:Gem::Version
|
91
75
|
version: '2.0'
|
92
76
|
type: :runtime
|
93
77
|
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.0'
|
94
83
|
description: RussianCentralBank extends Money::Bank::VariableExchange and gives you
|
95
84
|
access to the Central Bank of Russia currency exchange rates.
|
96
85
|
email:
|
@@ -113,31 +102,29 @@ files:
|
|
113
102
|
homepage: http://github.com/rmustafin/russian_central_bank
|
114
103
|
licenses:
|
115
104
|
- MIT
|
105
|
+
metadata: {}
|
116
106
|
post_install_message:
|
117
107
|
rdoc_options: []
|
118
108
|
require_paths:
|
119
109
|
- lib
|
120
110
|
required_ruby_version: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
111
|
requirements:
|
123
|
-
- -
|
112
|
+
- - '>='
|
124
113
|
- !ruby/object:Gem::Version
|
125
114
|
version: '0'
|
126
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
-
none: false
|
128
116
|
requirements:
|
129
|
-
- -
|
117
|
+
- - '>='
|
130
118
|
- !ruby/object:Gem::Version
|
131
119
|
version: '0'
|
132
120
|
requirements: []
|
133
121
|
rubyforge_project:
|
134
|
-
rubygems_version:
|
122
|
+
rubygems_version: 2.0.3
|
135
123
|
signing_key:
|
136
|
-
specification_version:
|
124
|
+
specification_version: 4
|
137
125
|
summary: Access to Central Bank of Russia currency exchange rates.
|
138
126
|
test_files:
|
139
127
|
- spec/russian_central_bank_spec.rb
|
140
128
|
- spec/spec_helper.rb
|
141
129
|
- spec/support/daily_rates.yml
|
142
130
|
- spec/support/helpers.rb
|
143
|
-
has_rdoc:
|