cnb 1.1.0 → 2.0.0

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: dbb47a31809ef9e009a2330209f0ae11f108aef6
4
- data.tar.gz: 12f89cb2d4a95b7d90889f36b1b9f06963c35b0c
3
+ metadata.gz: 858f3fe634e67b77e82d87c3745e5b131bc50354
4
+ data.tar.gz: 86c130801822ec5bf9d2a64764483c7ad8bb7bd4
5
5
  SHA512:
6
- metadata.gz: f8d92326b6b35450462076b1cca9fcbbcc310df1fa807eedaf887fa075593184aa4fe1805e6d280b2357dc3e3c97a935c2ced19807c4b5cf62032b45d37b8b18
7
- data.tar.gz: b691ed27f2c3d2e812be8105487065853469c5da71afd15e85489e065cd15809f89b0a9ed314520740e3783e07e41905d00b52404395e5273ce427ef500537c0
6
+ metadata.gz: 9dee283458065e6e87dbe69603c26780750df48db0b5ff3250bde2b853bc5050710a19f12e3d4c8447539484a29acbb90fbeb11bd9d1272b08f3b05e6e1084db
7
+ data.tar.gz: 478fbdb5558b95dfd7493517b2551a574c3a1b67b1e5ee68197e7f17ac60c694ab9548e6c6d5ab58df7756fef1de9167e809ef4aaadadd95fd7dacdd21206acb
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ cnb
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.2.2
data/.travis.yml CHANGED
@@ -1,6 +1,7 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.0
3
+ - 2.2.3
4
+ - 2.1.7
4
5
  - 2.0.0
5
- - 1.9.3
6
6
  script: bundle exec rspec
7
+ sudo: false
data/README.md CHANGED
@@ -2,99 +2,56 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/cnb.png)](http://badge.fury.io/rb/cnb)
4
4
  [![Build Status](https://travis-ci.org/ucetnictvi-on-line/cnb.png?branch=master)](https://travis-ci.org/ucetnictvi-on-line/cnb)
5
+ [![Dependency Status](https://gemnasium.com/ucetnictvi-on-line/cnb.svg)](https://gemnasium.com/ucetnictvi-on-line/cnb)
5
6
  [![Code Climate](https://codeclimate.com/github/ucetnictvi-on-line/cnb/badges/gpa.svg)](https://codeclimate.com/github/ucetnictvi-on-line/cnb)
6
7
  [![Test Coverage](https://codeclimate.com/github/ucetnictvi-on-line/cnb/badges/coverage.svg)](https://codeclimate.com/github/ucetnictvi-on-line/cnb)
7
8
 
8
- CNB is a gem that will help you get daily and monthly currency rates for czech crown (CZK) from Czech National Bank. Besides the currency rate you can also get name of the currency, name of the country where it is used and date when the currency rates were published.
9
-
9
+ CNB is a gem that will help you get daily and monthly currency rates for czech crown (CZK) from Czech National Bank.
10
10
 
11
11
  ## Install
12
12
 
13
- Add following into your Gemfile
14
13
 
15
- gem 'cnb'
16
14
 
17
- Run
15
+ Add following into your Gemfile
18
16
 
19
- $ bundle
17
+ ```ruby
18
+ gem 'cnb'
19
+ ```
20
20
 
21
21
  Or install the gem by on your own
22
22
 
23
- $ gem install cnb
24
-
23
+ ```ruby
24
+ gem install cnb
25
+ ```
25
26
 
26
27
  ## Usage
27
28
 
29
+ ### Daily
28
30
 
29
- ### Daily currency rates
30
- To work with daily currency rates start with the following code:
31
-
32
- CNB.daily_rates
33
-
34
- This will provide you object from which you can get the currency rates and other information. Everytime you use the code above, actual currency rates are retrived from Czech National Bank, so it is a good idea to assign the result to variable if you don't want to make more HTTP requests than neccessary.
35
-
36
- Get currency rate of currency with given currency code towards czech crown (CZK)
37
-
38
- CNB.daily_rates.rate('USD') # 19.927 (float value)
39
- CNB.daily_rates.rate('EUR') # 27.34
40
-
41
- By using the code above you make 2 requests for currency rates.
42
-
43
- The following code does the same thing but it retrives the currency rates just once.
44
-
45
- daily_rates = CNB.daily_rates
46
- daily_rates.rate('USD')
47
- daily_rates.rate('EUR')
48
-
49
- Get name of the currency in czech language.
50
-
51
- CNB.daily_rates.name('USD') # dolar
52
-
53
- Get name of the country where the currency comes from in czech language.
54
-
55
- CNB.daily_rates.country('USD') # USA
56
-
57
- **The currency code parameter is not case sensitive.**
58
-
59
- Get date when the currency rates were published. Czech National Bank does not publish currency rates during the weekend, so you may want to check when exactly were the values published.
60
-
61
- CNB.date
62
-
63
- You can get all currencies as hash where currency codes are used as keys by the following code
64
-
65
- CNB.daily_rates.currencies
66
-
67
-
68
- ### Monthly currency rates
69
-
70
- Some currency rates are published on monthly basis. You can get currency rates for any month and year since 2004.
71
-
72
- To get the monthly currency rates use the following code:
73
-
74
- # Get currency rates for March 2013
75
- CNB.monthly_rates(3, 2013)
76
-
77
- You can only retrieve monthly currency rates that were published since 2004. If you try to get older currency rates, exception will be raised.
78
-
79
- After using the code above, you can use the same methods as for the daily currency rates.
80
-
81
- monthly_rates = CNB.monthly_rates(3, 2013)
82
- monthly_rates.rate('HNL')
83
- monthly_rates.name('HNL') # lempira
84
- monthly_rates.country('HNL') # Honduras
85
- monthly_rates.date
86
-
87
- Get all currencies as hash
31
+ ```ruby
32
+ CNB.daily_rate('AUD', Date.today)
33
+ ```
88
34
 
89
- CNB.monthly_rates(3, 2013).currencies
35
+ Returns today's exchange rate between CZK and AUD.
36
+ Input date defaults to Date.today so the above line can written like this:
90
37
 
38
+ ```ruby
39
+ CNB.daily_rate('AUD')
40
+ ```
91
41
 
92
- ### Primary currency
42
+ ### Monthly
93
43
 
94
- Czech National Bank provides all currency rates towards czech crown (CZK). You can get the primary currency with the following code
44
+ ```ruby
45
+ CNB.monthly_rate('ALL', Date.today)
46
+ ```
95
47
 
96
- CNB::PRIMARY_CURRENCY # CZK
48
+ Returns today's exchange rate between CZK and ALL (Albanian lek).
97
49
 
50
+ #### Exceptions
51
+ * DateTooOld - triggers when date entered is older than 24 years, or 10 years if monthly.
52
+ * DateInFuture - triggers when date enetered is in future.
53
+ * CurrencyMissing - triggers when currency is not present.
54
+ * CurrencyNotSupported - triggers when currency is not in downloaded list of currencies.
98
55
 
99
56
  ## Contributing
100
57
 
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'cnb'
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ require 'pry'
11
+ Pry.start
12
+
13
+ # require 'irb'
14
+ # IRB.start
data/cnb.gemspec CHANGED
@@ -1,5 +1,6 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
4
 
4
5
  require 'cnb/version'
5
6
 
@@ -7,22 +8,25 @@ Gem::Specification.new do |s|
7
8
  s.name = 'cnb'
8
9
  s.version = CNB::VERSION
9
10
  s.platform = Gem::Platform::RUBY
10
- s.authors = ['Jan Zikán']
11
- s.email = ['zikan@uol.cz']
11
+ s.authors = ['Jan Zikán', 'Tomas Koutsky']
12
+ s.email = ['zikan@uol.cz', 'tomas@stepnivlk.net']
12
13
  s.summary = 'CNB currency rates'
13
- s.description = 'Get daily and monthly currency rates from Czech National Bank'
14
+ s.description = 'Get daily and monthly currency rates from Czech National Bank.'
14
15
  s.homepage = 'http://www.uol.cz'
15
16
  s.license = 'MIT'
16
17
 
17
- s.files = `git ls-files`.split("\n") - Dir["images/*"]
18
- s.test_files = `git ls-files -- spec/**/*`.split("\n")
18
+ s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
+ s.test_files = `git ls-files -- spec/**/*`.split("\n")
19
20
 
20
- s.require_paths = ['lib', 'config']
21
+ s.require_paths = %w('lib', 'config')
21
22
 
22
23
  s.add_dependency('nokogiri', '~> 1.6')
23
- s.add_development_dependency('pry', '~> 0.9')
24
- s.add_development_dependency('rake', '~> 0.9')
24
+ s.add_development_dependency('bundler')
25
+ s.add_development_dependency('rake', '~> 10.4')
25
26
  s.add_development_dependency('rspec', '~> 2.14')
27
+ s.add_development_dependency('pry')
28
+ s.add_development_dependency('webmock')
29
+ s.add_development_dependency('timecop')
26
30
  s.add_development_dependency('simplecov', '~> 0.8')
27
31
  s.add_development_dependency('codeclimate-test-reporter')
28
32
  end
data/lib/cnb.rb CHANGED
@@ -1,17 +1,26 @@
1
- require 'cnb/currency_rates'
1
+ require 'date'
2
+ require 'cnb/version'
3
+ require 'cnb/config'
4
+ require 'cnb/base'
2
5
  require 'cnb/daily_rates'
3
6
  require 'cnb/monthly_rates'
4
7
 
8
+ # The main interface to CNB rates.
5
9
  module CNB
6
- PRIMARY_CURRENCY = 'CZK'
10
+ class DateTooOld < StandardError; end
11
+ class DateInFuture < StandardError; end
12
+ class CurrencyMissing < StandardError; end
13
+ class CurrencyNotSupported < StandardError; end
7
14
 
8
- class << self
9
- def daily_rates
10
- DailyRates.new
11
- end
15
+ # Returns float with daily rate for given currency and date.
16
+ def self.daily_rate(currency, date = Date.today)
17
+ daily_rates = DailyRates.new
18
+ daily_rates.rate_for(currency, date)
19
+ end
12
20
 
13
- def monthly_rates(month, year)
14
- MonthlyRates.new(month, year)
15
- end
21
+ # Returns float with monthly rate for given currency and date.
22
+ def self.monthly_rate(currency, date = Date.today)
23
+ monthly_rates = MonthlyRates.new
24
+ monthly_rates.rate_for(currency, date)
16
25
  end
17
26
  end
data/lib/cnb/base.rb ADDED
@@ -0,0 +1,41 @@
1
+
2
+ require 'nokogiri'
3
+ require 'open-uri'
4
+
5
+ module CNB
6
+ class Base
7
+ def rate_for(currency, date)
8
+ fail CurrencyMissing unless currency
9
+ fail DateInFuture if date > Date.today
10
+
11
+ rates_for(date)
12
+ rate = @source.at_css("radek[kod='#{currency}']")
13
+
14
+ fail CurrencyNotSupported if rate.nil?
15
+
16
+ rate.attr('kurz').tr(',', '.').to_f
17
+ end
18
+
19
+ private
20
+
21
+ def rates_for(date)
22
+ if @source.nil? || (@source && !match_parsed_date?(date))
23
+ @source = source_for(date)
24
+ end
25
+
26
+ @source
27
+ end
28
+
29
+ def source_for(date)
30
+ Nokogiri::XML(open(url_for(date)))
31
+ end
32
+
33
+ def match_parsed_date?(date)
34
+ @source ? Date.parse(@source.at_css('kurzy').attr('datum')) == date : nil
35
+ end
36
+
37
+ def normalize_date(date)
38
+ date.is_a?(Date) ? date : Date.parse(date)
39
+ end
40
+ end
41
+ end
data/lib/cnb/config.rb ADDED
@@ -0,0 +1,8 @@
1
+ module CNB
2
+ BASE_URL = 'http://www.cnb.cz/cs/financni_trhy/devizovy_trh'
3
+ DAILY = '/kurzy_devizoveho_trhu/denni_kurz.xml?date='
4
+ DAILY_MAX_PAST = 24
5
+ MONTHLY = '/kurzy_ostatnich_men/kurzy.xml?mesic='
6
+ MONTHLY_SEP = '&rok='
7
+ MONTHLY_MAX_PAST = 10
8
+ end
@@ -1,10 +1,17 @@
1
+ require 'date'
2
+
1
3
  module CNB
2
- class DailyRates < CurrencyRates
3
- def initialize
4
- @currencies = {}
5
- @cur_rates_url = "#{CUR_RATES_URL}kurzy_devizoveho_trhu/denni_kurz.xml"
4
+ class DailyRates < Base
5
+ def rate_for(currency, date = Date.today)
6
+ normalized_date = normalize_date(date)
7
+ fail DateTooOld if normalized_date.year < (Date.today.year - CNB::DAILY_MAX_PAST)
8
+ super(currency, normalized_date)
9
+ end
10
+
11
+ private
6
12
 
7
- get_currencies
13
+ def url_for(date)
14
+ CNB::BASE_URL + CNB::DAILY + date.strftime('%d.%m.%Y')
8
15
  end
9
16
  end
10
17
  end
@@ -1,26 +1,16 @@
1
1
  module CNB
2
- class MonthlyRates < CurrencyRates
3
- def initialize(month, year)
4
- @month = month
5
- @year = year
6
-
7
- raise 'Invalid month given' unless valid_month?
8
- raise 'Invalid year given' unless valid_year?
9
-
10
- @currencies = {}
11
- @cur_rates_url = "#{CUR_RATES_URL}/kurzy_ostatnich_men/kurzy.xml?mesic=#{month}&rok=#{year}"
12
-
13
- get_currencies
2
+ class MonthlyRates < Base
3
+ def rate_for(currency, date = Date.today)
4
+ normalized_date = normalize_date(date)
5
+ fail DateTooOld if normalized_date.year < (Date.today.year - CNB::MONTHLY_MAX_PAST)
6
+ super(currency, normalized_date)
14
7
  end
15
8
 
16
9
  private
17
10
 
18
- def valid_month?
19
- @month.to_i >= 1 && @month.to_i <= 12
20
- end
21
-
22
- def valid_year?
23
- @year.to_i >= 2004 && @year.to_i <= Time.now.year
11
+ def url_for(date)
12
+ CNB::BASE_URL + CNB::MONTHLY + date.strftime('%m') +
13
+ CNB::MONTHLY_SEP + date.strftime('%Y')
24
14
  end
25
15
  end
26
16
  end
data/lib/cnb/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module CNB
2
- VERSION = '1.1.0'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+ require 'webmock/rspec'
3
+ require 'timecop'
4
+
5
+ RSpec.describe CNB::DailyRates do
6
+ let(:daily_rates) { CNB::DailyRates.new }
7
+ let(:currency) { 'AUD' }
8
+ let(:dates) do
9
+ {
10
+ invalid_past: Date.today - (365 * 25),
11
+ future: Date.today + 100
12
+ }
13
+ end
14
+
15
+ describe '#rate_for' do
16
+ before do
17
+ Timecop.freeze('25.02.2014')
18
+ url = CNB::BASE_URL + CNB::DAILY + Date.today.strftime('%d.%m.%Y')
19
+ stub_request(:get, url)
20
+ .to_return(status: 200, body: load_fixture)
21
+ end
22
+
23
+ after do
24
+ Timecop.return
25
+ end
26
+
27
+ context 'valid parameters' do
28
+ it 'returns rate for given currency and date' do
29
+ expect(daily_rates.rate_for(currency, Date.today)).to eql(17.936)
30
+ end
31
+
32
+ it 'returns rate for given currency with default date' do
33
+ expect(daily_rates.rate_for(currency)).to eql(17.936)
34
+ end
35
+ end
36
+
37
+ context 'invalid parameters' do
38
+ it 'raises CurrencyNotSupported exception when invalid currency given' do
39
+ expect { daily_rates.rate_for('FOOBAR') }
40
+ .to raise_error CNB::CurrencyNotSupported
41
+ end
42
+
43
+ it 'raises DateTooOld exception with too old date' do
44
+ expect { daily_rates.rate_for(currency, dates[:invalid_past]) }
45
+ .to raise_error CNB::DateTooOld
46
+ end
47
+
48
+ it 'raises DateInFuture exception with future date' do
49
+ expect { daily_rates.rate_for(currency, dates[:future]) }
50
+ .to raise_error CNB::DateInFuture
51
+ end
52
+
53
+ it 'raises CurrencyMissing exception when no currency given' do
54
+ expect { daily_rates.rate_for(nil) }
55
+ .to raise_error CNB::CurrencyMissing
56
+ end
57
+ end
58
+ end
59
+
60
+ def load_fixture
61
+ File.open('spec/fixtures/daily_rates.xml')
62
+ end
63
+ end
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+ require 'webmock/rspec'
3
+ require 'timecop'
4
+
5
+ RSpec.describe CNB::MonthlyRates do
6
+ let(:monthly_rates) { CNB::MonthlyRates.new }
7
+ let(:currency) { 'ALL' }
8
+ let(:dates) do
9
+ {
10
+ invalid_past: Date.today - (365 * 11),
11
+ future: Date.today + 100
12
+ }
13
+ end
14
+
15
+ describe '#rate_for' do
16
+ before do
17
+ Timecop.freeze('25.02.2014')
18
+ url = CNB::BASE_URL + CNB::MONTHLY + Date.today.strftime('%m') +
19
+ CNB::MONTHLY_SEP + Date.today.strftime('%Y')
20
+ stub_request(:get, url)
21
+ .to_return(status: 200, body: load_fixture)
22
+ end
23
+
24
+ after do
25
+ Timecop.return
26
+ end
27
+
28
+ context 'valid parameters' do
29
+ it 'returns rate for given currency and date' do
30
+ expect(monthly_rates.rate_for(currency, Date.today)).to eql(19.564)
31
+ end
32
+
33
+ it 'returns rate for given currency with default date' do
34
+ expect(monthly_rates.rate_for(currency)).to eql(19.564)
35
+ end
36
+ end
37
+
38
+ context 'invalid parameters' do
39
+ it 'raises CurrencyNotSupported exception when invalid currency given' do
40
+ expect { monthly_rates.rate_for('FOOBAR') }
41
+ .to raise_error CNB::CurrencyNotSupported
42
+ end
43
+
44
+ it 'raises DateTooOld exception with too old date' do
45
+ expect { monthly_rates.rate_for(currency, dates[:invalid_past]) }
46
+ .to raise_error CNB::DateTooOld
47
+ end
48
+
49
+ it 'raises DateInFuture exception with future date' do
50
+ expect { monthly_rates.rate_for(currency, dates[:future]) }
51
+ .to raise_error CNB::DateInFuture
52
+ end
53
+
54
+ it 'raises CurrencyMissing exception when no currency given' do
55
+ expect { monthly_rates.rate_for(nil) }
56
+ .to raise_error CNB::CurrencyMissing
57
+ end
58
+ end
59
+ end
60
+
61
+ def load_fixture
62
+ File.open('spec/fixtures/monthly_rates.xml')
63
+ end
64
+ end
@@ -0,0 +1,128 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <kurzy banka="CNB" datum="28.02.2014" poradi="2">
3
+ <tabulka typ="XML_TYP_CNB_KURZY_DEVIZOVEHO_TRHU">
4
+ <radek kod="AFN" mena="afghani" mnozstvi="100" kurz="35,137" zeme="Afghánistán" />
5
+ <radek kod="ALL" mena="lek" mnozstvi="100" kurz="19,564" zeme="Albánie" />
6
+ <radek kod="DZD" mena="dinár" mnozstvi="100" kurz="25,541" zeme="Alžírsko" />
7
+ <radek kod="AOA" mena="kwanza" mnozstvi="100" kurz="20,328" zeme="Angola" />
8
+ <radek kod="ARS" mena="peso" mnozstvi="1" kurz="2,510" zeme="Argentina" />
9
+ <radek kod="AMD" mena="dram" mnozstvi="100" kurz="4,792" zeme="Arménie" />
10
+ <radek kod="AWG" mena="gulden" mnozstvi="1" kurz="11,119" zeme="Aruba" />
11
+ <radek kod="AZN" mena="manat" mnozstvi="1" kurz="25,295" zeme="Ázerbájdžán" />
12
+ <radek kod="BSD" mena="dolar" mnozstvi="1" kurz="19,791" zeme="Bahamy" />
13
+ <radek kod="BHD" mena="dinár" mnozstvi="1" kurz="52,496" zeme="Bahrajn" />
14
+ <radek kod="BDT" mena="taka" mnozstvi="100" kurz="25,580" zeme="Bangladéš" />
15
+ <radek kod="BBD" mena="dolar" mnozstvi="1" kurz="10,033" zeme="Barbados" />
16
+ <radek kod="BZD" mena="dolar" mnozstvi="1" kurz="10,046" zeme="Belize" />
17
+ <radek kod="BYR" mena="rubl" mnozstvi="100" kurz="0,203" zeme="Bělorusko" />
18
+ <radek kod="BMD" mena="dolar" mnozstvi="1" kurz="19,791" zeme="Bermudy" />
19
+ <radek kod="BTN" mena="ngultrum" mnozstvi="100" kurz="32,029" zeme="Bhútán" />
20
+ <radek kod="BOB" mena="boliviano" mnozstvi="1" kurz="2,885" zeme="Bolivie" />
21
+ <radek kod="BAM" mena="marka" mnozstvi="1" kurz="13,979" zeme="Bosna a Hercegovina" />
22
+ <radek kod="BWP" mena="pula" mnozstvi="1" kurz="2,238" zeme="Botswana" />
23
+ <radek kod="BND" mena="dolar" mnozstvi="1" kurz="15,634" zeme="Brunej" />
24
+ <radek kod="BIF" mena="frank" mnozstvi="100" kurz="1,280" zeme="Burundi" />
25
+ <radek kod="ANG" mena="gulden" mnozstvi="1" kurz="11,119" zeme="Curacao a St. Marteen" />
26
+ <radek kod="DOP" mena="peso" mnozstvi="100" kurz="46,133" zeme="Dominikánská republika" />
27
+ <radek kod="DJF" mena="frank" mnozstvi="100" kurz="11,329" zeme="Džibutsko" />
28
+ <radek kod="EGP" mena="libra" mnozstvi="1" kurz="2,843" zeme="Egypt" />
29
+ <radek kod="ERN" mena="nakfa" mnozstvi="1" kurz="1,333" zeme="Eritrea" />
30
+ <radek kod="ETB" mena="birr" mnozstvi="1" kurz="1,030" zeme="Etiopie" />
31
+ <radek kod="FKP" mena="libra" mnozstvi="1" kurz="33,088" zeme="Falklandy" />
32
+ <radek kod="FJD" mena="dolar" mnozstvi="1" kurz="10,485" zeme="Fidži" />
33
+ <radek kod="XPF" mena="frank CFP" mnozstvi="100" kurz="23,045" zeme="Francouzská Polynésie" />
34
+ <radek kod="GMD" mena="dalasi" mnozstvi="100" kurz="52,357" zeme="Gambie" />
35
+ <radek kod="GHS" mena="Ghana cedi" mnozstvi="1" kurz="7,769" zeme="Ghana" />
36
+ <radek kod="GIP" mena="libra" mnozstvi="1" kurz="33,088" zeme="Gibraltar" />
37
+ <radek kod="GEL" mena="lari" mnozstvi="1" kurz="11,417" zeme="Gruzie" />
38
+ <radek kod="GTQ" mena="quetzal" mnozstvi="1" kurz="2,553" zeme="Guatemala" />
39
+ <radek kod="GNF" mena="frank" mnozstvi="1000" kurz="2,919" zeme="Guinea" />
40
+ <radek kod="GYD" mena="dolar" mnozstvi="100" kurz="9,739" zeme="Guyana" />
41
+ <radek kod="HTG" mena="gourde" mnozstvi="100" kurz="45,146" zeme="Haiti" />
42
+ <radek kod="HNL" mena="lempira" mnozstvi="1" kurz="1,012" zeme="Honduras" />
43
+ <radek kod="CLP" mena="peso" mnozstvi="100" kurz="3,535" zeme="Chile" />
44
+ <radek kod="IQD" mena="dinar" mnozstvi="1000" kurz="17,003" zeme="Irák" />
45
+ <radek kod="IRR" mena="rial" mnozstvi="1000" kurz="0,795" zeme="Írán" />
46
+ <radek kod="ISK" mena="koruna" mnozstvi="100" kurz="17,616" zeme="Island" />
47
+ <radek kod="JMD" mena="dolar" mnozstvi="100" kurz="18,376" zeme="Jamajka" />
48
+ <radek kod="YER" mena="rial" mnozstvi="100" kurz="9,218" zeme="Jemen" />
49
+ <radek kod="JOD" mena="dinár" mnozstvi="1" kurz="27,977" zeme="Jordánsko" />
50
+ <radek kod="KYD" mena="dolar" mnozstvi="1" kurz="24,135" zeme="Kajmanské ostrovy" />
51
+ <radek kod="KHR" mena="riel" mnozstvi="1000" kurz="4,974" zeme="Kambodža" />
52
+ <radek kod="CVE" mena="escudo" mnozstvi="100" kurz="25,160" zeme="Kapverdy" />
53
+ <radek kod="QAR" mena="rial" mnozstvi="1" kurz="5,435" zeme="Katar" />
54
+ <radek kod="KZT" mena="tenge" mnozstvi="100" kurz="10,733" zeme="Kazachstán" />
55
+ <radek kod="KES" mena="šilink" mnozstvi="100" kurz="22,978" zeme="Keňa" />
56
+ <radek kod="KPW" mena="won" mnozstvi="1" kurz="15,224" zeme="KLDR" />
57
+ <radek kod="COP" mena="peso" mnozstvi="1000" kurz="9,679" zeme="Kolumbie" />
58
+ <radek kod="KMF" mena="frank" mnozstvi="100" kurz="5,521" zeme="Komory" />
59
+ <radek kod="CDF" mena="frank" mnozstvi="100" kurz="2,177" zeme="Konžská demokratická republika" />
60
+ <radek kod="CRC" mena="colon" mnozstvi="100" kurz="3,942" zeme="Kostarika" />
61
+ <radek kod="CUP" mena="peso" mnozstvi="1" kurz="19,791" zeme="Kuba" />
62
+ <radek kod="KWD" mena="dinár" mnozstvi="1" kurz="70,426" zeme="Kuvajt" />
63
+ <radek kod="KGS" mena="som" mnozstvi="100" kurz="36,786" zeme="Kyrgyzstán" />
64
+ <radek kod="LAK" mena="kip" mnozstvi="1000" kurz="2,468" zeme="Laos" />
65
+ <radek kod="LSL" mena="loti" mnozstvi="1" kurz="1,852" zeme="Lesotho" />
66
+ <radek kod="LBP" mena="libra" mnozstvi="1000" kurz="13,161" zeme="Libanon" />
67
+ <radek kod="LRD" mena="dolar" mnozstvi="100" kurz="24,433" zeme="Libérie" />
68
+ <radek kod="LYD" mena="dinár" mnozstvi="1" kurz="16,039" zeme="Libye" />
69
+ <radek kod="MOP" mena="pataca" mnozstvi="1" kurz="2,478" zeme="Macao" />
70
+ <radek kod="MGA" mena="ariary" mnozstvi="1000" kurz="8,512" zeme="Madagaskar" />
71
+ <radek kod="MKD" mena="denár" mnozstvi="100" kurz="44,364" zeme="Makedonie" />
72
+ <radek kod="MWK" mena="kwacha" mnozstvi="100" kurz="4,769" zeme="Malawi" />
73
+ <radek kod="MVR" mena="rufiya" mnozstvi="1" kurz="1,299" zeme="Maledivy" />
74
+ <radek kod="MAD" mena="dirham" mnozstvi="1" kurz="2,428" zeme="Maroko" />
75
+ <radek kod="MRO" mena="ouguiya" mnozstvi="100" kurz="6,872" zeme="Mauritánie" />
76
+ <radek kod="MUR" mena="rupie" mnozstvi="100" kurz="66,191" zeme="Mauritius" />
77
+ <radek kod="MDL" mena="leu" mnozstvi="1" kurz="1,457" zeme="Moldavsko" />
78
+ <radek kod="MNT" mena="tugrik" mnozstvi="100" kurz="1,151" zeme="Mongolsko" />
79
+ <radek kod="MZN" mena="nový metical" mnozstvi="1000" kurz="615,583" zeme="Mosambik" />
80
+ <radek kod="MMK" mena="kyat" mnozstvi="1" kurz="0,020" zeme="Myanmar" />
81
+ <radek kod="NAD" mena="dolar" mnozstvi="1" kurz="1,852" zeme="Namibie" />
82
+ <radek kod="NPR" mena="rupie" mnozstvi="100" kurz="20,031" zeme="Nepál" />
83
+ <radek kod="NGN" mena="naira" mnozstvi="100" kurz="12,016" zeme="Nigérie" />
84
+ <radek kod="NIO" mena="cordoba " mnozstvi="1" kurz="0,783" zeme="Nikaragua" />
85
+ <radek kod="OMR" mena="rial" mnozstvi="1" kurz="51,407" zeme="Omán" />
86
+ <radek kod="PKR" mena="rupie" mnozstvi="100" kurz="18,872" zeme="Pákistán" />
87
+ <radek kod="PAB" mena="balboa" mnozstvi="1" kurz="19,791" zeme="Panama" />
88
+ <radek kod="PGK" mena="kina" mnozstvi="1" kurz="7,125" zeme="Papua-Nová Quinea" />
89
+ <radek kod="PYG" mena="guarani" mnozstvi="1000" kurz="4,465" zeme="Paraguay" />
90
+ <radek kod="PEN" mena="nuevo sol" mnozstvi="1" kurz="7,071" zeme="Peru" />
91
+ <radek kod="RWF" mena="frank" mnozstvi="100" kurz="2,932" zeme="Rwanda" />
92
+ <radek kod="SVC" mena="colon" mnozstvi="1" kurz="2,264" zeme="Salvádor" />
93
+ <radek kod="WST" mena="tala" mnozstvi="1" kurz="8,312" zeme="Samoa" />
94
+ <radek kod="SAR" mena="riyal" mnozstvi="1" kurz="5,277" zeme="Saudská Arábie" />
95
+ <radek kod="SCR" mena="rupie" mnozstvi="1" kurz="1,650" zeme="Seychely" />
96
+ <radek kod="SLL" mena="leone" mnozstvi="1000" kurz="4,573" zeme="Sierra-Leone" />
97
+ <radek kod="SOS" mena="šilink" mnozstvi="1000" kurz="19,271" zeme="Somálsko" />
98
+ <radek kod="AED" mena="dirham" mnozstvi="1" kurz="5,388" zeme="Spojené arabské emiráty" />
99
+ <radek kod="RSD" mena="dinár" mnozstvi="100" kurz="23,614" zeme="Srbsko" />
100
+ <radek kod="LKR" mena="rupie" mnozstvi="100" kurz="15,142" zeme="Srí Lanka" />
101
+ <radek kod="XAF" mena="frank CFA" mnozstvi="100" kurz="4,166" zeme="Státy střední Afriky" />
102
+ <radek kod="XOF" mena="frank CFA" mnozstvi="100" kurz="4,142" zeme="Státy západní Afriky" />
103
+ <radek kod="SDG" mena="libra" mnozstvi="1" kurz="3,484" zeme="Súdán" />
104
+ <radek kod="SRD" mena="dolar" mnozstvi="1" kurz="6,090" zeme="Surinam" />
105
+ <radek kod="SHP" mena="libra" mnozstvi="1" kurz="33,088" zeme="Svatá Helena" />
106
+ <radek kod="STD" mena="dobra" mnozstvi="1000" kurz="1,150" zeme="Svatý Tomáš a Princův ostrov" />
107
+ <radek kod="SZL" mena="lilangeni" mnozstvi="1" kurz="1,852" zeme="Svazijsko" />
108
+ <radek kod="SYP" mena="libra" mnozstvi="100" kurz="13,825" zeme="Sýrie" />
109
+ <radek kod="SBD" mena="dolar" mnozstvi="1" kurz="2,656" zeme="Šalomounovy ostrovy" />
110
+ <radek kod="TJS" mena="somoni" mnozstvi="1" kurz="4,160" zeme="Tádžikistán" />
111
+ <radek kod="TWD" mena="dolar" mnozstvi="100" kurz="65,315" zeme="Taiwan" />
112
+ <radek kod="TZS" mena="šilink" mnozstvi="100" kurz="1,222" zeme="Tanzanie" />
113
+ <radek kod="TOP" mena="pa`anga" mnozstvi="1" kurz="10,612" zeme="Tonga" />
114
+ <radek kod="TTD" mena="dolar" mnozstvi="1" kurz="3,102" zeme="Trinidad a Tobago" />
115
+ <radek kod="TND" mena="dinár" mnozstvi="1" kurz="12,567" zeme="Tunisko" />
116
+ <radek kod="TMT" mena="nový manat" mnozstvi="1" kurz="6,956" zeme="Turkmenistán" />
117
+ <radek kod="UGX" mena="šilink" mnozstvi="100" kurz="0,783" zeme="Uganda" />
118
+ <radek kod="UAH" mena="hřivna" mnozstvi="1" kurz="2,040" zeme="Ukrajina" />
119
+ <radek kod="UYU" mena="peso" mnozstvi="100" kurz="88,274" zeme="Uruguay" />
120
+ <radek kod="UZS" mena="sum" mnozstvi="100" kurz="0,891" zeme="Uzbekistán" />
121
+ <radek kod="VUV" mena="vatu" mnozstvi="100" kurz="20,828" zeme="Vanuatu" />
122
+ <radek kod="VEF" mena="bolivar" mnozstvi="1" kurz="3,149" zeme="Venezuela" />
123
+ <radek kod="VND" mena="dong" mnozstvi="1000" kurz="0,939" zeme="Vietnam" />
124
+ <radek kod="XCD" mena="dolar" mnozstvi="1" kurz="7,497" zeme="Východokaribská oblast" />
125
+ <radek kod="ZMW" mena="kwacha" mnozstvi="1" kurz="3,403" zeme="Zambie" />
126
+ <radek kod="ZWL" mena="dolar" mnozstvi="1000" kurz="0,000" zeme="Zimbabwe" />
127
+ </tabulka>
128
+ </kurzy>
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cnb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Zikán
8
+ - Tomas Koutsky
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-09-16 00:00:00.000000000 Z
12
+ date: 2015-11-29 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: nokogiri
@@ -25,33 +26,33 @@ dependencies:
25
26
  - !ruby/object:Gem::Version
26
27
  version: '1.6'
27
28
  - !ruby/object:Gem::Dependency
28
- name: pry
29
+ name: bundler
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
- - - "~>"
32
+ - - ">="
32
33
  - !ruby/object:Gem::Version
33
- version: '0.9'
34
+ version: '0'
34
35
  type: :development
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
- - - "~>"
39
+ - - ">="
39
40
  - !ruby/object:Gem::Version
40
- version: '0.9'
41
+ version: '0'
41
42
  - !ruby/object:Gem::Dependency
42
43
  name: rake
43
44
  requirement: !ruby/object:Gem::Requirement
44
45
  requirements:
45
46
  - - "~>"
46
47
  - !ruby/object:Gem::Version
47
- version: '0.9'
48
+ version: '10.4'
48
49
  type: :development
49
50
  prerelease: false
50
51
  version_requirements: !ruby/object:Gem::Requirement
51
52
  requirements:
52
53
  - - "~>"
53
54
  - !ruby/object:Gem::Version
54
- version: '0.9'
55
+ version: '10.4'
55
56
  - !ruby/object:Gem::Dependency
56
57
  name: rspec
57
58
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +67,48 @@ dependencies:
66
67
  - - "~>"
67
68
  - !ruby/object:Gem::Version
68
69
  version: '2.14'
70
+ - !ruby/object:Gem::Dependency
71
+ name: pry
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: webmock
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: timecop
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
69
112
  - !ruby/object:Gem::Dependency
70
113
  name: simplecov
71
114
  requirement: !ruby/object:Gem::Requirement
@@ -94,31 +137,35 @@ dependencies:
94
137
  - - ">="
95
138
  - !ruby/object:Gem::Version
96
139
  version: '0'
97
- description: Get daily and monthly currency rates from Czech National Bank
140
+ description: Get daily and monthly currency rates from Czech National Bank.
98
141
  email:
99
142
  - zikan@uol.cz
143
+ - tomas@stepnivlk.net
100
144
  executables: []
101
145
  extensions: []
102
146
  extra_rdoc_files: []
103
147
  files:
104
148
  - ".gitignore"
105
149
  - ".rspec"
150
+ - ".ruby-gemset"
151
+ - ".ruby-version"
106
152
  - ".travis.yml"
107
153
  - Gemfile
108
154
  - LICENSE
109
155
  - README.md
156
+ - Rakefile
157
+ - bin/console
110
158
  - cnb.gemspec
111
159
  - lib/cnb.rb
112
- - lib/cnb/currency_rates.rb
160
+ - lib/cnb/base.rb
161
+ - lib/cnb/config.rb
113
162
  - lib/cnb/daily_rates.rb
114
163
  - lib/cnb/monthly_rates.rb
115
164
  - lib/cnb/version.rb
116
- - spec/cnb_spec.rb
165
+ - spec/cnb/daily_rates_spec.rb
166
+ - spec/cnb/monthly_rates_spec.rb
117
167
  - spec/fixtures/daily_rates.xml
118
- - spec/fixtures/monthly_rates_2013_03.xml
119
- - spec/models/daily_rates_spec.rb
120
- - spec/models/monthly_rates_spec.rb
121
- - spec/spec_helper.rb
168
+ - spec/fixtures/monthly_rates.xml
122
169
  homepage: http://www.uol.cz
123
170
  licenses:
124
171
  - MIT
@@ -126,8 +173,8 @@ metadata: {}
126
173
  post_install_message:
127
174
  rdoc_options: []
128
175
  require_paths:
129
- - lib
130
- - config
176
+ - "'lib',"
177
+ - "'config'"
131
178
  required_ruby_version: !ruby/object:Gem::Requirement
132
179
  requirements:
133
180
  - - ">="
@@ -140,12 +187,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
187
  version: '0'
141
188
  requirements: []
142
189
  rubyforge_project:
143
- rubygems_version: 2.2.2
190
+ rubygems_version: 2.4.6
144
191
  signing_key:
145
192
  specification_version: 4
146
193
  summary: CNB currency rates
147
194
  test_files:
195
+ - spec/cnb/daily_rates_spec.rb
196
+ - spec/cnb/monthly_rates_spec.rb
148
197
  - spec/fixtures/daily_rates.xml
149
- - spec/fixtures/monthly_rates_2013_03.xml
150
- - spec/models/daily_rates_spec.rb
151
- - spec/models/monthly_rates_spec.rb
198
+ - spec/fixtures/monthly_rates.xml
@@ -1,48 +0,0 @@
1
- require 'open-uri'
2
- require 'nokogiri'
3
-
4
- module CNB
5
- class CurrencyRates
6
- CUR_RATES_URL = 'http://www.cnb.cz/cs/financni_trhy/devizovy_trh/'
7
-
8
- attr_reader :date, :currencies
9
-
10
- def rate(cur_code)
11
- get_currency(cur_code)[:rate]
12
- end
13
-
14
- def name(cur_code)
15
- get_currency(cur_code)[:name]
16
- end
17
-
18
- def country(cur_code)
19
- get_currency(cur_code)[:country]
20
- end
21
-
22
- protected
23
-
24
- def get_currency(cur_code)
25
- cur_code.upcase!
26
- raise 'Currency with given code was not found in exchange rates list' unless @currencies[cur_code]
27
- @currencies[cur_code]
28
- end
29
-
30
- def get_currencies
31
- xml_doc = Nokogiri::XML(open(@cur_rates_url))
32
- raise 'Currency rates are not available at the moment' if xml_doc.text.empty?
33
-
34
- @date = Date.parse(xml_doc.css('kurzy').attr('datum').value)
35
-
36
- xml_doc.css('radek').each do |currency|
37
- amount = currency.attr('mnozstvi').to_f
38
- rate = currency.attr('kurz').tr(',', '.').to_f
39
-
40
- @currencies[currency.attr('kod')] = {
41
- country: currency.attr('zeme'),
42
- name: currency.attr('mena'),
43
- rate: rate / amount
44
- }
45
- end
46
- end
47
- end
48
- end
data/spec/cnb_spec.rb DELETED
@@ -1,23 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'CNB' do
4
- describe '#daily_rates' do
5
- before(:each) do
6
- CNB::DailyRates.any_instance.stub(:get_currencies) { {} }
7
- end
8
-
9
- it 'returns DailyRates object' do
10
- expect(CNB.daily_rates).to be_a(CNB::DailyRates)
11
- end
12
- end
13
-
14
- describe '#monthly_rates' do
15
- before(:each) do
16
- CNB::MonthlyRates.any_instance.stub(:get_currencies) { {} }
17
- end
18
-
19
- it 'returns MonthlyRates object' do
20
- expect(CNB.monthly_rates(11,2013)).to be_a(CNB::MonthlyRates)
21
- end
22
- end
23
- end
@@ -1,130 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <kurzy banka="CNB" datum="29.03.2013" poradi="3">
3
- <tabulka typ="XML_TYP_CNB_KURZY_DEVIZOVEHO_TRHU">
4
- <radek kod="AFN" mena="afghani" mnozstvi="100" kurz="38,167" zeme="Afghánistán"/>
5
- <radek kod="ALL" mena="lek" mnozstvi="100" kurz="18,474" zeme="Albánie"/>
6
- <radek kod="DZD" mena="dinár" mnozstvi="100" kurz="25,454" zeme="Alžírsko"/>
7
- <radek kod="AOA" mena="kwanza" mnozstvi="100" kurz="20,964" zeme="Angola"/>
8
- <radek kod="ARS" mena="peso" mnozstvi="1" kurz="3,921" zeme="Argentina"/>
9
- <radek kod="AMD" mena="dram" mnozstvi="100" kurz="4,808" zeme="Arménie"/>
10
- <radek kod="AWG" mena="gulden" mnozstvi="1" kurz="11,276" zeme="Aruba"/>
11
- <radek kod="AZN" mena="manat" mnozstvi="1" kurz="25,622" zeme="Ázerbájdžán"/>
12
- <radek kod="BSD" mena="dolar" mnozstvi="1" kurz="20,072" zeme="Bahamy"/>
13
- <radek kod="BHD" mena="dinár" mnozstvi="1" kurz="53,246" zeme="Bahrajn"/>
14
- <radek kod="BDT" mena="taka" mnozstvi="100" kurz="25,717" zeme="Bangladéš"/>
15
- <radek kod="BBD" mena="dolar" mnozstvi="1" kurz="10,036" zeme="Barbados"/>
16
- <radek kod="BZD" mena="dolar" mnozstvi="1" kurz="9,937" zeme="Belize"/>
17
- <radek kod="BYR" mena="rubl" mnozstvi="100" kurz="0,233" zeme="Bělorusko"/>
18
- <radek kod="BMD" mena="dolar" mnozstvi="1" kurz="20,072" zeme="Bermudy"/>
19
- <radek kod="BTN" mena="ngultrum" mnozstvi="100" kurz="36,979" zeme="Bhútán"/>
20
- <radek kod="BOB" mena="boliviano" mnozstvi="1" kurz="2,884" zeme="Bolivie"/>
21
- <radek kod="BAM" mena="marka" mnozstvi="1" kurz="13,158" zeme="Bosna a Hercegovina"/>
22
- <radek kod="BWP" mena="pula" mnozstvi="1" kurz="2,429" zeme="Botswana"/>
23
- <radek kod="BND" mena="dolar" mnozstvi="1" kurz="16,179" zeme="Brunej"/>
24
- <radek kod="BIF" mena="frank" mnozstvi="100" kurz="1,294" zeme="Burundi"/>
25
- <radek kod="CVE" mena="escudo" mnozstvi="100" kurz="23,457" zeme="Cape Verde"/>
26
- <radek kod="ANG" mena="gulden" mnozstvi="1" kurz="11,276" zeme="Curacao a St. Marteen"/>
27
- <radek kod="DOP" mena="peso" mnozstvi="100" kurz="49,136" zeme="Dominikánská republika"/>
28
- <radek kod="DJF" mena="frank" mnozstvi="100" kurz="11,489" zeme="Džibutsko"/>
29
- <radek kod="EGP" mena="libra" mnozstvi="1" kurz="2,950" zeme="Egypt"/>
30
- <radek kod="ERN" mena="nakfa" mnozstvi="1" kurz="1,379" zeme="Eritrea"/>
31
- <radek kod="ETB" mena="birr" mnozstvi="1" kurz="1,090" zeme="Etiopie"/>
32
- <radek kod="FKP" mena="libra" mnozstvi="1" kurz="30,520" zeme="Falklandy"/>
33
- <radek kod="FJD" mena="dolar" mnozstvi="1" kurz="11,142" zeme="Fidži"/>
34
- <radek kod="XPF" mena="frank CFP" mnozstvi="100" kurz="21,695" zeme="Francouzská Polynésie"/>
35
- <radek kod="GMD" mena="dalasi" mnozstvi="100" kurz="62,725" zeme="Gambie"/>
36
- <radek kod="GHS" mena="Ghana cedi" mnozstvi="1" kurz="10,360" zeme="Ghana"/>
37
- <radek kod="GIP" mena="libra" mnozstvi="1" kurz="30,520" zeme="Gibraltar"/>
38
- <radek kod="GEL" mena="lari" mnozstvi="1" kurz="12,108" zeme="Gruzie"/>
39
- <radek kod="GTQ" mena="quetzal" mnozstvi="1" kurz="2,581" zeme="Guatemala"/>
40
- <radek kod="GNF" mena="frank" mnozstvi="1000" kurz="2,896" zeme="Guinea"/>
41
- <radek kod="GYD" mena="dolar" mnozstvi="100" kurz="9,926" zeme="Guyana"/>
42
- <radek kod="HTG" mena="gourde" mnozstvi="100" kurz="47,228" zeme="Haiti"/>
43
- <radek kod="HNL" mena="lempira" mnozstvi="1" kurz="1,024" zeme="Honduras"/>
44
- <radek kod="CLP" mena="peso" mnozstvi="100" kurz="4,258" zeme="Chile"/>
45
- <radek kod="IQD" mena="dinar" mnozstvi="1000" kurz="17,303" zeme="Irák"/>
46
- <radek kod="IRR" mena="rial" mnozstvi="1000" kurz="1,637" zeme="Írán"/>
47
- <radek kod="ISK" mena="koruna" mnozstvi="100" kurz="16,227" zeme="Island"/>
48
- <radek kod="JMD" mena="dolar" mnozstvi="100" kurz="20,597" zeme="Jamajka"/>
49
- <radek kod="YER" mena="rial" mnozstvi="100" kurz="9,368" zeme="Jemen"/>
50
- <radek kod="JOD" mena="dinár" mnozstvi="1" kurz="28,354" zeme="Jordánsko"/>
51
- <radek kod="KYD" mena="dolar" mnozstvi="1" kurz="24,478" zeme="Kajmanské ostrovy"/>
52
- <radek kod="KHR" mena="riel" mnozstvi="1000" kurz="5,041" zeme="Kambodža"/>
53
- <radek kod="QAR" mena="rial" mnozstvi="1" kurz="5,513" zeme="Katar"/>
54
- <radek kod="KZT" mena="tenge" mnozstvi="100" kurz="13,302" zeme="Kazachstán"/>
55
- <radek kod="KES" mena="šilink" mnozstvi="100" kurz="23,586" zeme="Keňa"/>
56
- <radek kod="KPW" mena="won" mnozstvi="1" kurz="15,440" zeme="KLDR"/>
57
- <radek kod="COP" mena="peso" mnozstvi="1000" kurz="11,016" zeme="Kolumbie"/>
58
- <radek kod="KMF" mena="frank" mnozstvi="100" kurz="5,234" zeme="Komory"/>
59
- <radek kod="CDF" mena="frank" mnozstvi="100" kurz="2,220" zeme="Konžská demokratická republika"/>
60
- <radek kod="CRC" mena="colon" mnozstvi="100" kurz="4,027" zeme="Kostarika"/>
61
- <radek kod="CUP" mena="peso" mnozstvi="1" kurz="20,072" zeme="Kuba"/>
62
- <radek kod="KWD" mena="dinár" mnozstvi="1" kurz="70,478" zeme="Kuvajt"/>
63
- <radek kod="KGS" mena="som" mnozstvi="100" kurz="42,465" zeme="Kyrgyzstán"/>
64
- <radek kod="LAK" mena="kip" mnozstvi="1000" kurz="2,570" zeme="Laos"/>
65
- <radek kod="LSL" mena="loti" mnozstvi="1" kurz="2,175" zeme="Lesotho"/>
66
- <radek kod="LBP" mena="libra" mnozstvi="1000" kurz="13,372" zeme="Libanon"/>
67
- <radek kod="LRD" mena="dolar" mnozstvi="100" kurz="27,216" zeme="Libérie"/>
68
- <radek kod="LYD" mena="dinár" mnozstvi="1" kurz="15,664" zeme="Libye"/>
69
- <radek kod="MOP" mena="pataca" mnozstvi="1" kurz="2,513" zeme="Macao"/>
70
- <radek kod="MGA" mena="ariary" mnozstvi="1000" kurz="8,977" zeme="Madagaskar"/>
71
- <radek kod="MKD" mena="denár" mnozstvi="100" kurz="42,301" zeme="Makedonie"/>
72
- <radek kod="MWK" mena="kwacha" mnozstvi="100" kurz="5,282" zeme="Malawi"/>
73
- <radek kod="MVR" mena="rufiya" mnozstvi="1" kurz="1,321" zeme="Maledivy"/>
74
- <radek kod="MAD" mena="dirham" mnozstvi="1" kurz="2,321" zeme="Maroko"/>
75
- <radek kod="MRO" mena="ouguiya" mnozstvi="100" kurz="7,299" zeme="Mauritánie"/>
76
- <radek kod="MUR" mena="rupie" mnozstvi="100" kurz="64,644" zeme="Mauritius"/>
77
- <radek kod="MDL" mena="leu" mnozstvi="1" kurz="1,625" zeme="Moldávie"/>
78
- <radek kod="MNT" mena="tugrik" mnozstvi="100" kurz="1,439" zeme="Mongolsko"/>
79
- <radek kod="MZN" mena="nový metical" mnozstvi="1000" kurz="669,067" zeme="Mosambik"/>
80
- <radek kod="MMK" mena="kyat" mnozstvi="1" kurz="0,023" zeme="Myanmar"/>
81
- <radek kod="NAD" mena="dolar" mnozstvi="1" kurz="2,175" zeme="Namibie"/>
82
- <radek kod="NPR" mena="rupie" mnozstvi="100" kurz="23,242" zeme="Nepál"/>
83
- <radek kod="NGN" mena="naira" mnozstvi="100" kurz="12,668" zeme="Nigérie"/>
84
- <radek kod="NIO" mena="cordoba " mnozstvi="1" kurz="0,829" zeme="Nikaragua"/>
85
- <radek kod="OMR" mena="rial" mnozstvi="1" kurz="52,139" zeme="Omán"/>
86
- <radek kod="PKR" mena="rupie" mnozstvi="100" kurz="20,409" zeme="Pákistán"/>
87
- <radek kod="PAB" mena="balboa" mnozstvi="1" kurz="20,072" zeme="Panama"/>
88
- <radek kod="PGK" mena="kina" mnozstvi="1" kurz="9,103" zeme="Papua-Nová Quinea"/>
89
- <radek kod="PYG" mena="guarani" mnozstvi="1000" kurz="5,018" zeme="Paraguay"/>
90
- <radek kod="PEN" mena="nuevo sol" mnozstvi="1" kurz="7,754" zeme="Peru"/>
91
- <radek kod="RWF" mena="frank" mnozstvi="100" kurz="3,186" zeme="Rwanda"/>
92
- <radek kod="SVC" mena="colon" mnozstvi="1" kurz="2,296" zeme="Salvádor"/>
93
- <radek kod="WST" mena="tala" mnozstvi="1" kurz="8,659" zeme="Samoa"/>
94
- <radek kod="SAR" mena="riyal" mnozstvi="1" kurz="5,352" zeme="Saudská Arábie"/>
95
- <radek kod="SCR" mena="rupie" mnozstvi="1" kurz="1,781" zeme="Seychely"/>
96
- <radek kod="SLL" mena="leone" mnozstvi="1000" kurz="4,647" zeme="Sierra-Leone"/>
97
- <radek kod="SOS" mena="šilink" mnozstvi="1000" kurz="13,231" zeme="Somálsko"/>
98
- <radek kod="AED" mena="dirham" mnozstvi="1" kurz="5,465" zeme="Spojené arabské emiráty"/>
99
- <radek kod="RSD" mena="dinár" mnozstvi="100" kurz="23,100" zeme="Srbsko"/>
100
- <radek kod="LKR" mena="rupie" mnozstvi="100" kurz="15,842" zeme="Srí Lanka"/>
101
- <radek kod="XAF" mena="frank CFA" mnozstvi="100" kurz="3,924" zeme="Státy střední Afriky"/>
102
- <radek kod="XOF" mena="frank CFA" mnozstvi="100" kurz="3,924" zeme="Státy západní Afriky"/>
103
- <radek kod="SDG" mena="libra" mnozstvi="1" kurz="4,562" zeme="Súdán"/>
104
- <radek kod="SRD" mena="dolar" mnozstvi="1" kurz="6,176" zeme="Surinam"/>
105
- <radek kod="SHP" mena="libra" mnozstvi="1" kurz="30,520" zeme="Svatá Helena"/>
106
- <radek kod="STD" mena="dobra" mnozstvi="1000" kurz="1,083" zeme="Svatý Tomáš a Princův ostrov"/>
107
- <radek kod="SZL" mena="lilangeni" mnozstvi="1" kurz="2,175" zeme="Svazijsko"/>
108
- <radek kod="SYP" mena="libra" mnozstvi="100" kurz="28,503" zeme="Sýrie"/>
109
- <radek kod="SBD" mena="dolar" mnozstvi="1" kurz="2,740" zeme="Šalomounovy ostrovy"/>
110
- <radek kod="TJS" mena="somoni" mnozstvi="1" kurz="4,222" zeme="Tádžikistán"/>
111
- <radek kod="TWD" mena="dolar" mnozstvi="100" kurz="67,333" zeme="Taiwan"/>
112
- <radek kod="TZS" mena="šilink" mnozstvi="100" kurz="1,245" zeme="Tanzanie"/>
113
- <radek kod="TOP" mena="pa`anga" mnozstvi="1" kurz="11,453" zeme="Tonga"/>
114
- <radek kod="TTD" mena="dolar" mnozstvi="1" kurz="3,141" zeme="Trinidad a Tobago"/>
115
- <radek kod="TND" mena="dinár" mnozstvi="1" kurz="12,596" zeme="Tunisko"/>
116
- <radek kod="TMT" mena="nový manat" mnozstvi="1" kurz="7,055" zeme="Turkmenistán"/>
117
- <radek kod="UGX" mena="šilink" mnozstvi="100" kurz="0,777" zeme="Uganda"/>
118
- <radek kod="UAH" mena="hřivna" mnozstvi="1" kurz="2,468" zeme="Ukrajina"/>
119
- <radek kod="UYU" mena="peso" mnozstvi="100" kurz="106,766" zeme="Uruguay"/>
120
- <radek kod="UZS" mena="sum" mnozstvi="100" kurz="0,993" zeme="Uzbekistán"/>
121
- <radek kod="VUV" mena="vatu" mnozstvi="100" kurz="22,128" zeme="Vanuatu"/>
122
- <radek kod="VEF" mena="bolivar" mnozstvi="1" kurz="3,194" zeme="Venezuela"/>
123
- <radek kod="VND" mena="dong" mnozstvi="1000" kurz="0,959" zeme="Vietnam"/>
124
- <radek kod="TPE" mena="escudo" mnozstvi="1" kurz="20,072" zeme="Východní Timor"/>
125
- <radek kod="XCD" mena="dolar" mnozstvi="1" kurz="7,518" zeme="Východokaribská oblast"/>
126
- <radek kod="ZMW" mena="kwacha" mnozstvi="1" kurz="3,741" zeme="Zambie"/>
127
- <radek kod="ZWL" mena="dolar" mnozstvi="1000" kurz="0,000" zeme="Zimbabwe"/>
128
- </tabulka>
129
- </kurzy>
130
-
@@ -1,36 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe CNB::DailyRates do
4
- before(:each) do
5
- filepath = File.join('spec', 'fixtures', 'daily_rates.xml')
6
- xml_doc = Nokogiri::XML(File.read(filepath))
7
- Nokogiri::XML::Document.should_receive(:parse).and_return { xml_doc }
8
- @parser = CNB::DailyRates.new
9
- end
10
-
11
- it 'returns date from the exchange rates file' do
12
- expect(@parser.date).to eq Date.parse('25.2.2014')
13
- end
14
-
15
- describe '#cur_rate' do
16
- it 'returns currency rate' do
17
- expect(@parser.rate('USD')).to eq(19.876)
18
- end
19
-
20
- it 'returns currency rate no matter the case of currency code' do
21
- expect(@parser.rate('usd')).to eq(19.876)
22
- end
23
-
24
- it 'raises error if currency with given code is not included in the exchange rates file' do
25
- expect { @parser.rate('USX') }.to raise_error(StandardError)
26
- end
27
- end
28
-
29
- it 'returns country name' do
30
- expect(@parser.name('USD')).to eq('dolar')
31
- end
32
-
33
- it 'returns currency name' do
34
- expect(@parser.country('USD')).to eq('USA')
35
- end
36
- end
@@ -1,48 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe CNB::MonthlyRates do
4
- before(:each) do
5
- filepath = File.join('spec', 'fixtures', 'monthly_rates_2013_03.xml')
6
- xml_doc = Nokogiri::XML(File.read(filepath))
7
- Nokogiri::XML::Document.should_receive(:parse).and_return { xml_doc }
8
- @parser = CNB::MonthlyRates.new(3, 2013)
9
- end
10
-
11
- it 'raises error if required month is invalid' do
12
- expect { CNB::MonthlyRates.new('abc', 2013) }.to raise_error(StandardError)
13
- expect { CNB::MonthlyRates.new(0, 2013) }.to raise_error(StandardError)
14
- expect { CNB::MonthlyRates.new(13, 2013) }.to raise_error(StandardError)
15
- end
16
-
17
- it 'raises error if required year is invalid' do
18
- expect { CNB::MonthlyRates.new(3, 'abc') }.to raise_error(StandardError)
19
- expect { CNB::MonthlyRates.new(3, 2000) }.to raise_error(StandardError)
20
- expect { CNB::MonthlyRates.new(3, 2050) }.to raise_error(StandardError)
21
- end
22
-
23
- it 'returns date from the exchange rates file' do
24
- expect(@parser.date).to eq Date.parse('29.3.2013')
25
- end
26
-
27
- describe '#cur_rate' do
28
- it 'returns currency rate' do
29
- expect(@parser.rate('HNL')).to eq(1.024)
30
- end
31
-
32
- it 'returns currency rate no matter the case of the currency code' do
33
- expect(@parser.rate('hnl')).to eq(1.024)
34
- end
35
-
36
- it 'raises error if currency wth given code is not included in the exchange rates file' do
37
- expect { @parser.rate('HNX') }.to raise_error(StandardError)
38
- end
39
- end
40
-
41
- it 'returns country name' do
42
- expect(@parser.country('HNL')).to eq('Honduras')
43
- end
44
-
45
- it 'returns currency name' do
46
- expect(@parser.name('HNL')).to eq('lempira')
47
- end
48
- end
data/spec/spec_helper.rb DELETED
@@ -1,22 +0,0 @@
1
- require 'rubygems'
2
- require "codeclimate-test-reporter"
3
- CodeClimate::TestReporter.start
4
-
5
- # COVERAGE=true rspec
6
- if ENV['COVERAGE']
7
- require 'simplecov'
8
- SimpleCov.start
9
- end
10
-
11
- require 'cnb'
12
-
13
- # Requires supporting ruby files with custom matchers and macros, etc,
14
- # in spec/support/ and its subdirectories.
15
- Dir[File.join('spec/support/**/*.rb')].each { |f| require f }
16
-
17
- RSpec.configure do |config|
18
- config.expect_with :rspec do |c|
19
- # disable the `should` syntax
20
- c.syntax = :expect
21
- end
22
- end