lbank 1.0.0 → 2.0.0

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
- SHA1:
3
- metadata.gz: e97309035b55a0607c7e25877d7b93d47efd7798
4
- data.tar.gz: 2f2ab7d5612edd9509d501dc0f15b308275dced4
2
+ SHA256:
3
+ metadata.gz: 105dd10eb94b5ae8f077e82c6bb9b40391982beae9552453b074c4711162fd31
4
+ data.tar.gz: 6ddfdc8992576c21265e3d483b5772e886f59bc1fe85317d2ea189f27baee901
5
5
  SHA512:
6
- metadata.gz: 47701d086875ab0ba6e85b98e942378ff2940f33c1f391ca6b4738294b897eb746be03616fa5a14c785ce399651e5c488b237b5fe6d4a029a347619ad5513cc2
7
- data.tar.gz: 154a81cf41ab3b91b817ce3d92d66e349daeccd85ed7afa8325b93f33d6680dc8f8e2bf245e5364174c5bc36944108e9265e000da14cfb709dbacadaf179d9a2
6
+ metadata.gz: 34f984ba0a8daffc9e4a85cb0a9103b52b9fb5e0ba4c909707fee3a79a640d1656e0ce24a08ff4efd5a1dafa99c30f2f5510fe86bf9bd8f1165696631b257bd7
7
+ data.tar.gz: bdfb9de226b979fa473d3b91f03b51a064eaf08c4ce3f0fd295a06bca525cb9882e959eefedd94b146c7d5f4f8e0561b70559c9f000793011bbd16d877e8225c
@@ -0,0 +1,19 @@
1
+ name: Build
2
+ on: [push,pull_request]
3
+ jobs:
4
+ build:
5
+ runs-on: ubuntu-latest
6
+ strategy:
7
+ matrix:
8
+ ruby-version:
9
+ - 3.0
10
+ - 3.4
11
+ - 4.0
12
+ name: Ruby ${{ matrix.ruby-version }} sample
13
+ steps:
14
+ - uses: actions/checkout@v7
15
+ - uses: ruby/setup-ruby@v1
16
+ with:
17
+ ruby-version: ${{ matrix.ruby-version }}
18
+ - run: bundle install
19
+ - run: bundle exec rake spec
@@ -0,0 +1,21 @@
1
+ name: Publish gem to rubygems
2
+ on:
3
+ release:
4
+ types: [published]
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v7
10
+ - uses: ruby/setup-ruby@v1
11
+
12
+ # setup .gem/credentials
13
+ - run: mkdir -p ~/.gem
14
+ - env:
15
+ RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
16
+ run: >-
17
+ echo -e "---\n:rubygems_api_key: ${RUBYGEMS_API_KEY}" > ~/.gem/credentials
18
+ - run: chmod 0600 ~/.gem/credentials
19
+
20
+ - run: gem build lbank.gemspec --output=release.gem
21
+ - run: gem push release.gem
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.3.1
1
+ 3.3.5
data/Gemfile CHANGED
@@ -4,4 +4,5 @@ gemspec
4
4
 
5
5
  group :test do
6
6
  gem 'rake'
7
+ gem 'nokogiri'
7
8
  end
data/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # Lbank
2
2
 
3
- [![Build Status](https://secure.travis-ci.org/laurynas/lbank.png)](http://travis-ci.org/laurynas/lbank)
3
+ [![Gem](https://img.shields.io/gem/v/lbank.svg)](https://rubygems.org/gems/lbank)
4
+ [![Build Status](https://github.com/laurynas/lbank/actions/workflows/main.yml/badge.svg)](https://github.com/laurynas/lbank/actions)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
4
6
 
5
- Fetches currency rates from Lithuanian Central Bank website http://lbank.lt.
7
+ Fetches currency rates from Lithuanian Central Bank website https://lb.lt.
6
8
  Does currency conversion.
7
9
  Supports historic currency rates.
8
10
 
data/lbank.gemspec CHANGED
@@ -14,11 +14,14 @@ Gem::Specification.new do |gem|
14
14
  gem.name = 'lbank'
15
15
  gem.require_paths = ['lib']
16
16
  gem.version = Lbank::VERSION
17
+ gem.required_ruby_version = '>= 3.0'
17
18
 
18
- gem.add_dependency 'faraday'
19
- gem.add_dependency 'faraday_middleware'
20
- gem.add_dependency 'activesupport'
19
+ gem.add_dependency 'faraday', '>= 2.0', '< 3'
20
+ gem.add_dependency 'faraday-xml'
21
+ gem.add_dependency 'faraday-net_http'
22
+ gem.add_dependency 'tzinfo'
21
23
  gem.add_dependency 'multi_xml'
24
+ gem.add_dependency 'rexml'
22
25
 
23
26
  gem.add_development_dependency 'rspec', '~> 3.5'
24
27
  gem.add_development_dependency 'rspec-its', '~> 1.2'
@@ -0,0 +1,4 @@
1
+ module Lbank
2
+ class Error < StandardError; end
3
+ class ResponseError < Error; end
4
+ end
data/lib/lbank/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Lbank
2
- VERSION = '1.0.0'
2
+ VERSION = '2.0.0'
3
3
  end
data/lib/lbank.rb CHANGED
@@ -1,8 +1,11 @@
1
1
  require 'lbank/version'
2
2
  require 'lbank/memory_cache'
3
- require 'active_support/time'
3
+ require 'lbank/errors'
4
+ require 'date'
5
+ require 'tzinfo'
4
6
  require 'faraday'
5
- require 'faraday_middleware'
7
+ require 'faraday/net_http'
8
+ require 'faraday/xml'
6
9
  require 'bigdecimal'
7
10
 
8
11
  module Lbank
@@ -23,12 +26,14 @@ module Lbank
23
26
  end
24
27
 
25
28
  def currency_rates(time = nil)
26
- time ||= Time.now
27
- bank_time = time.to_time.in_time_zone(TIMEZONE)
28
- date = bank_time.strftime('%Y-%m-%d')
29
+ date = bank_date(time || Time.now)
29
30
 
30
31
  cache.fetch(cache_key(date)) do
31
32
  response = connection.post(URL, tp: RATE_TYPE, dt: date)
33
+ error = response.body['FxRates']['OprlErr']
34
+
35
+ raise ResponseError.new(error['Desc']) if error
36
+
32
37
  fx_rates = response.body['FxRates']['FxRate']
33
38
 
34
39
  rates = { fx_rates[0]['CcyAmt'][0]['Ccy'] => 1 }
@@ -41,8 +46,8 @@ module Lbank
41
46
  end
42
47
  end
43
48
 
44
- def convert_currency(amount, from_currency, to_currency, date = nil)
45
- rates = currency_rates(date)
49
+ def convert_currency(amount, from_currency, to_currency, time = nil)
50
+ rates = currency_rates(time)
46
51
  from_rate = rates[from_currency.to_s]
47
52
  to_rate = rates[to_currency.to_s]
48
53
 
@@ -53,6 +58,15 @@ module Lbank
53
58
  "lbank-#{date}"
54
59
  end
55
60
 
61
+ def bank_date(time)
62
+ if time.is_a?(Date) && !time.is_a?(DateTime)
63
+ time.strftime('%Y-%m-%d')
64
+ else
65
+ local_time = TZInfo::Timezone.get(TIMEZONE).utc_to_local(time.to_time.utc)
66
+ local_time.strftime('%Y-%m-%d')
67
+ end
68
+ end
69
+
56
70
  def connection
57
71
  @connection ||= Faraday.new do |builder|
58
72
  builder.request :url_encoded
data/spec/lbank_spec.rb CHANGED
@@ -1,28 +1,27 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Lbank do
4
+ let(:date) { Date.new(2012, 8, 4) }
5
+
4
6
  describe '#currency_rates' do
5
- subject { described_class.currency_rates }
7
+ subject { described_class.currency_rates(date) }
6
8
 
7
9
  its(['USD']) { is_expected.to be > 0 }
8
- end
9
-
10
- describe '#convert_currency' do
11
- it 'converts currency' do
12
- expect(subject.convert_currency(10, 'USD', 'EUR')).to be > 0
13
- expect(subject.convert_currency(10, 'EUR', 'LTL')).to eq 34.528
14
10
 
15
- date = Date.new(2012, 8, 4)
11
+ context 'when invalid time' do
12
+ let(:date) { Time.now + 7 * 24 * 60 * 60 }
16
13
 
17
- expect(subject.convert_currency(10, 'EUR', 'LTL')).to eq 34.528
18
- expect(round(subject.convert_currency(1, 'USD', 'EUR', date))).to eq 0.82
19
- expect(round(subject.convert_currency(100, 'RUB', 'USD', date))).to eq 3.08
14
+ it 'raises error' do
15
+ expect { subject }.to raise_error(Lbank::ResponseError, /No data/)
16
+ end
20
17
  end
21
18
  end
22
19
 
23
- private
24
-
25
- def round(number, precision = 2)
26
- ("%.#{precision}f" % number).to_f
20
+ describe '#convert_currency' do
21
+ it 'converts currency' do
22
+ expect(subject.convert_currency(10, 'EUR', 'LTL', date).round(2)).to eq 34.53
23
+ expect(subject.convert_currency(1, 'USD', 'EUR', date).round(2)).to eq 0.82
24
+ expect(subject.convert_currency(100, 'RUB', 'USD', date).round(2)).to eq 3.08
25
+ end
27
26
  end
28
27
  end
metadata CHANGED
@@ -1,17 +1,37 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lbank
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laurynas Butkus
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-24 00:00:00.000000000 Z
11
+ date: 2026-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '3'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '2.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '3'
33
+ - !ruby/object:Gem::Dependency
34
+ name: faraday-xml
15
35
  requirement: !ruby/object:Gem::Requirement
16
36
  requirements:
17
37
  - - ">="
@@ -25,7 +45,7 @@ dependencies:
25
45
  - !ruby/object:Gem::Version
26
46
  version: '0'
27
47
  - !ruby/object:Gem::Dependency
28
- name: faraday_middleware
48
+ name: faraday-net_http
29
49
  requirement: !ruby/object:Gem::Requirement
30
50
  requirements:
31
51
  - - ">="
@@ -39,7 +59,7 @@ dependencies:
39
59
  - !ruby/object:Gem::Version
40
60
  version: '0'
41
61
  - !ruby/object:Gem::Dependency
42
- name: activesupport
62
+ name: tzinfo
43
63
  requirement: !ruby/object:Gem::Requirement
44
64
  requirements:
45
65
  - - ">="
@@ -66,6 +86,20 @@ dependencies:
66
86
  - - ">="
67
87
  - !ruby/object:Gem::Version
68
88
  version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: rexml
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
69
103
  - !ruby/object:Gem::Dependency
70
104
  name: rspec
71
105
  requirement: !ruby/object:Gem::Requirement
@@ -101,16 +135,18 @@ executables: []
101
135
  extensions: []
102
136
  extra_rdoc_files: []
103
137
  files:
138
+ - ".github/workflows/main.yml"
139
+ - ".github/workflows/publish.yml"
104
140
  - ".gitignore"
105
141
  - ".rspec"
106
142
  - ".ruby-version"
107
- - ".travis.yml"
108
143
  - Gemfile
109
144
  - LICENSE
110
145
  - README.md
111
146
  - Rakefile
112
147
  - lbank.gemspec
113
148
  - lib/lbank.rb
149
+ - lib/lbank/errors.rb
114
150
  - lib/lbank/memory_cache.rb
115
151
  - lib/lbank/version.rb
116
152
  - spec/lbank_spec.rb
@@ -118,7 +154,7 @@ files:
118
154
  homepage: https://github.com/laurynas/lbank
119
155
  licenses: []
120
156
  metadata: {}
121
- post_install_message:
157
+ post_install_message:
122
158
  rdoc_options: []
123
159
  require_paths:
124
160
  - lib
@@ -126,16 +162,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
162
  requirements:
127
163
  - - ">="
128
164
  - !ruby/object:Gem::Version
129
- version: '0'
165
+ version: '3.0'
130
166
  required_rubygems_version: !ruby/object:Gem::Requirement
131
167
  requirements:
132
168
  - - ">="
133
169
  - !ruby/object:Gem::Version
134
170
  version: '0'
135
171
  requirements: []
136
- rubyforge_project:
137
- rubygems_version: 2.5.1
138
- signing_key:
172
+ rubygems_version: 3.5.16
173
+ signing_key:
139
174
  specification_version: 4
140
175
  summary: Fetches currency rates from Lithuanian Central Bank website. Does currency
141
176
  conversion. Supports historic currency rates.
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- rvm:
2
- - ruby-head
3
- - 2.2.2
4
- script: "bundle exec rake spec"
5
-