currency_converter 1.1.1 → 1.1.2

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: 54926655f0b8f648e0d2b014d6f1bd3b0f37dbb8
4
- data.tar.gz: 98d7de1b04b89e210f6d4533b1e10fb8e71a9d86
3
+ metadata.gz: 5d941b72d7db2416895b8934b4acac8fd2739f3e
4
+ data.tar.gz: 03e7bd53d1984e7d0e17200f18af2f111e37e407
5
5
  SHA512:
6
- metadata.gz: 6edc9863b7d5be579d0e44bb37e27fff824861ad0e8503a2cb106c0546b5ad8af86da450c7d5500ead5b85cc778e13915390186f00950f8a0b88e9a8cb40be77
7
- data.tar.gz: 130b1a83cb7415a37385729696d37651fc3ce3f5a187fa37f098afd4e68ac492b93f8c6d0bb547ff975ac9bf25048d7e22bd6f3a87759a43fe7e95d7f744c6a7
6
+ metadata.gz: e9011f2aef8d40a5a1bf471e4f9a85ebeecf693b2c2fa6ccf0927ed4dceb929687deb56f4d04f1f1dacb75aed8e9eaa18c3f91d3dbf3338e072d096ff56d68a1
7
+ data.tar.gz: 3e358814142b2d4b06780f0ac742ee6e430af20c04eff51fb99e4d0b80f993e3e7f5d3d57437079fd18f7e5b854af80fba6dc96b5c93ccda88195886b2c6fdad
@@ -0,0 +1,2 @@
1
+ service_name: travis-ci
2
+ repo_token: tYOGn64AUQQ7jxe0VCi8JhcMwHc8gawTc
@@ -5,6 +5,7 @@ rvm:
5
5
  - 2.1.0
6
6
  - 2.1.1
7
7
  - 2.2
8
+ - 2.4.3
8
9
 
9
10
  before_install:
10
11
  - gem install bundler
data/Gemfile CHANGED
@@ -1,4 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ group :test do
4
+ gem 'coveralls', require: false
5
+ end
6
+
3
7
  # Specify your gem's dependencies in currency.gemspec
4
8
  gemspec
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # CurrencyConverter
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/currency_converter.svg)](http://badge.fury.io/rb/currency_converter) [![Build Status](https://travis-ci.org/dark-prince/currency_converter.svg)](https://travis-ci.org/dark-prince/currency_converter) [![Code Climate](https://codeclimate.com/github/dark-prince/currency_converter.png)](https://codeclimate.com/github/dark-prince/currency_converter) [![Dependency Status](https://gemnasium.com/dark-prince/currency_converter.svg)](https://gemnasium.com/dark-prince/currency_converter) [![License](http://img.shields.io/license/MIT.png)](http://opensource.org/licenses/MIT) [![Coverage Status](https://coveralls.io/repos/dark-prince/currency_converter/badge.png?branch=master)](https://coveralls.io/r/dark-prince/currency_converter?branch=master)
4
+
3
5
  Simple Ruby API to get exchange rates from currencies using Google finance currency converter and Yahoo finance currency converter. You can convert currencies directly through this library.
4
6
 
5
7
  ## Installation
@@ -21,19 +23,19 @@ Or install it yourself as:
21
23
  To convert between two currencies using Google finance currency converter:
22
24
 
23
25
  currency_converter = CurrencyConverter::Google.new
24
- currency_converter.exchange("EUR", "USD", 100)
26
+ currency_converter.exchange('EUR', 'USD', 100)
25
27
  => 132.89
26
28
 
27
- currency_converter.exchange("USD", "EUR", 100)
29
+ currency_converter.exchange('USD', 'EUR', 100)
28
30
  => 75.15
29
31
 
30
32
  To convert between two currencies using Yahoo finance currency converter:
31
33
 
32
34
  currency_converter = CurrencyConverter::Yahoo.new
33
- currency_converter.exchange("EUR", "USD", 1)
35
+ currency_converter.exchange('EUR', 'USD', 1)
34
36
  => 1.33
35
37
 
36
- currency_converter.exchange("USD", "EUR", 1)
38
+ currency_converter.exchange('USD', 'EUR', 1)
37
39
  => 0.75
38
40
 
39
41
  ## Contributing
@@ -20,13 +20,12 @@ Gem::Specification.new do |spec|
20
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.required_ruby_version = '>= 1.8.7'
23
+ spec.required_ruby_version = '>= 2.0.0'
24
24
  spec.add_dependency 'nokogiri'
25
25
 
26
- spec.add_development_dependency 'bundler', '~> 1.3'
27
- spec.add_development_dependency 'rake', '< 12.0.0'
28
-
29
- spec.add_development_dependency 'rspec', '~> 2.14'
30
- spec.add_development_dependency 'yard', '~> 0.8'
31
- spec.add_development_dependency 'kramdown', '~> 1.1'
26
+ spec.add_development_dependency 'bundler'
27
+ spec.add_development_dependency 'rake'
28
+ spec.add_development_dependency 'rspec'
29
+ spec.add_development_dependency 'yard'
30
+ spec.add_development_dependency 'kramdown'
32
31
  end
@@ -19,8 +19,8 @@ module CurrencyConverter
19
19
  #
20
20
  # @example
21
21
  # currency_converter = CurrencyConverter::Google.new
22
- # currency_converter.exchange("USD", "EUR", 100)
23
- # currency_converter.exchange("USD", "INR", 100)
22
+ # currency_converter.exchange('USD', 'EUR', 100)
23
+ # currency_converter.exchange('USD', 'INR', 100)
24
24
  def exchange(from, to, fixnum)
25
25
  @from_currency = from.upcase.to_sym
26
26
  @to_currency = to.upcase.to_sym
@@ -52,16 +52,14 @@ module CurrencyConverter
52
52
 
53
53
  return $1
54
54
  rescue Timeout::Error
55
- raise StandardError, "Please check your internet connection"
55
+ raise StandardError, 'Please check your internet connection'
56
56
  end
57
57
 
58
- # Raise errors for invalid currencies.
59
58
  def validate_currency
60
59
  raise CurrencyConverter::UnknownCurrency.new(from_currency) unless CurrencyConverter::CURRENCIES.has_key?(from_currency)
61
60
  raise CurrencyConverter::UnknownCurrency.new(to_currency) unless CurrencyConverter::CURRENCIES.has_key?(to_currency)
62
61
  end
63
62
 
64
- # Raise errors for missing data.
65
63
  def validate_rate(rate)
66
64
  raise CurrencyConverter::MissingExchangeRate.new(from_currency, to_currency) if rate.to_f.zero?
67
65
  end
@@ -1,3 +1,3 @@
1
1
  module CurrencyConverter
2
- VERSION = "1.1.1"
2
+ VERSION = '1.1.2'
3
3
  end
@@ -14,10 +14,12 @@ module CurrencyConverter
14
14
  # Returns the array of currencies rates
15
15
  attr_reader :rates
16
16
 
17
+ API_URL = 'https://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote;currency=true?view=basic'
18
+
17
19
  def initialize
18
20
  response = fetch_data
19
21
 
20
- parse_rates(response.body)
22
+ parse_rates(response)
21
23
  end
22
24
 
23
25
  # Receive the amount of you desire currency.
@@ -28,16 +30,16 @@ module CurrencyConverter
28
30
  #
29
31
  # @example
30
32
  # currency_converter = CurrencyConverter::Yahoo.new
31
- # currency_converter.exchange("USD", "EUR", 100)
32
- # currency_converter.exchange("USD", "INR", 100)
33
+ # currency_converter.exchange('USD', 'EUR', 100)
34
+ # currency_converter.exchange('USD', 'INR', 100)
33
35
  def exchange(base, quot, amount)
34
36
  @from_currency = base.upcase.to_sym
35
37
  @to_currency = quot.upcase.to_sym
36
38
 
37
39
  validate_currency
38
40
 
39
- base_rate = rates[@from_currency].to_f
40
- quot_rate = rates[@to_currency].to_f
41
+ base_rate = rates[from_currency].to_f
42
+ quot_rate = rates[to_currency].to_f
41
43
 
42
44
  rate = base_rate.zero? ? 0 : (quot_rate / base_rate)
43
45
  validate_rate(rate)
@@ -48,33 +50,27 @@ module CurrencyConverter
48
50
  private
49
51
 
50
52
  def fetch_data
51
- api = "http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote;currency=true?view=basic"
52
-
53
- uri = URI.parse(api)
54
- http = Net::HTTP.new(uri.host, uri.port)
55
- http.read_timeout = http.open_timeout = 20
56
- http.start { http.request(Net::HTTP::Get.new(uri.to_s)) }
53
+ Net::HTTP.get(URI(API_URL))
57
54
  end
58
55
 
59
56
  def parse_rates(html)
60
- @rates = { :USD => 1.0 }
57
+ @rates = { USD: 1.0 }
61
58
 
62
59
  result = Nokogiri::HTML(html)
60
+
63
61
  result.css('resource').each do |resource|
64
62
  symbol = resource.xpath(".//field[@name='symbol']").text[0,3]
65
63
  price = resource.xpath(".//field[@name='price']").text
66
64
 
67
- @rates[symbol.upcase.to_sym] = price.to_f unless symbol.nil? && price.nil?
65
+ rates[symbol.upcase.to_sym] = price.to_f unless symbol.nil? && price.nil?
68
66
  end
69
67
  end
70
68
 
71
- # Raise errors for invalid currencies.
72
69
  def validate_currency
73
70
  raise UnknownCurrency.new(from_currency) unless CURRENCIES.has_key?(from_currency)
74
71
  raise UnknownCurrency.new(to_currency) unless CURRENCIES.has_key?(to_currency)
75
72
  end
76
73
 
77
- # Raise errors for missing data.
78
74
  def validate_rate(rate)
79
75
  raise MissingExchangeRate.new(from_currency, to_currency) if rate.zero?
80
76
  end
@@ -1,23 +1,23 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  describe CurrencyConverter::Google do
4
- let(:currency_converter) { CurrencyConverter::Google.new }
4
+ let(:currency_converter) { described_class.new }
5
5
 
6
- describe "#exchange" do
7
- it "returns the correct rate" do
8
- expect(currency_converter.exchange("USD", "USD", 1)).to eq 1
6
+ context '#exchange' do
7
+ it 'returns the correct rate' do
8
+ expect(currency_converter.exchange('USD', 'USD', 1)).to eq 1
9
9
  end
10
10
  end
11
11
 
12
- describe "#validate_currency" do
13
- describe CurrencyConverter::UnknownCurrency do
12
+ context '#validate_currency' do
13
+ context 'CurrencyConverter::UnknownCurrency' do
14
14
  it 'raise an error on an unsupported currency code' do
15
- expect { currency_converter.exchange("EUR", "UNKNOWN", 100) }.to raise_error(CurrencyConverter::UnknownCurrency)
16
- expect { currency_converter.exchange("UNKNOWN", "EUR", 100) }.to raise_error(CurrencyConverter::UnknownCurrency)
15
+ expect { currency_converter.exchange('EUR', 'UNKNOWN', 100) }.to raise_error(CurrencyConverter::UnknownCurrency)
16
+ expect { currency_converter.exchange('UNKNOWN', 'EUR', 100) }.to raise_error(CurrencyConverter::UnknownCurrency)
17
17
  end
18
18
 
19
19
  it 'doesn\'t raise an error for supported currency codes' do
20
- expect { currency_converter.exchange("EUR", "USD", 100) }.not_to raise_error
20
+ expect { currency_converter.exchange('EUR', 'USD', 100) }.to_not raise_error
21
21
  end
22
22
  end
23
23
  end
@@ -1,23 +1,23 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  describe CurrencyConverter::Yahoo do
4
- let(:currency_converter) { CurrencyConverter::Yahoo.new }
4
+ let(:currency_converter) { described_class.new }
5
5
 
6
- describe "#exchange" do
7
- it "returns the correct rate" do
8
- expect(currency_converter.exchange("USD", "USD", 1)).to eq 1
6
+ context '#exchange' do
7
+ it 'returns the correct rate' do
8
+ expect(currency_converter.exchange('USD', 'USD', 1)).to eq 1
9
9
  end
10
10
  end
11
11
 
12
- describe "#validate_currency" do
13
- describe CurrencyConverter::UnknownCurrency do
12
+ context '#validate_currency' do
13
+ context 'CurrencyConverter::UnknownCurrency' do
14
14
  it 'raise an error on an unsupported currency code' do
15
- expect { currency_converter.exchange("EUR", "UNKNOWN", 100) }.to raise_error(CurrencyConverter::UnknownCurrency)
16
- expect { currency_converter.exchange("UNKNOWN", "EUR", 100) }.to raise_error(CurrencyConverter::UnknownCurrency)
15
+ expect { currency_converter.exchange('EUR', 'UNKNOWN', 100) }.to raise_error(CurrencyConverter::UnknownCurrency)
16
+ expect { currency_converter.exchange('UNKNOWN', 'EUR', 100) }.to raise_error(CurrencyConverter::UnknownCurrency)
17
17
  end
18
18
 
19
19
  it 'doesn\'t raise an error for supported currency codes' do
20
- expect { currency_converter.exchange("EUR", "USD", 100) }.not_to raise_error
20
+ expect { currency_converter.exchange('EUR', 'USD', 100) }.to_not raise_error
21
21
  end
22
22
  end
23
23
  end
@@ -1,5 +1,13 @@
1
1
  require 'currency_converter'
2
+ require 'coveralls'
3
+
4
+ Coveralls.wear!
2
5
 
3
6
  RSpec.configure do |config|
4
- config.order = "rand"
7
+ config.color = true
8
+ config.order = 'rand'
9
+
10
+ config.expect_with :rspec do |c|
11
+ c.syntax = :expect
12
+ end
5
13
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: currency_converter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diganta Mandal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-01 00:00:00.000000000 Z
11
+ date: 2017-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -28,72 +28,72 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1.3'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '1.3'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "<"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 12.0.0
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "<"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 12.0.0
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '2.14'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '2.14'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: yard
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '0.8'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '0.8'
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: kramdown
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '1.1'
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '1.1'
96
+ version: '0'
97
97
  description: Google provides a web site to converts currencies using exchange rates
98
98
  but they have not provided any API for ruby. This is a small library that converts
99
99
  currencies exchange rate. You can convert currencies directly through this library.
@@ -103,6 +103,7 @@ executables: []
103
103
  extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
+ - ".coveralls.yml"
106
107
  - ".gitignore"
107
108
  - ".rspec"
108
109
  - ".travis.yml"
@@ -132,7 +133,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
132
133
  requirements:
133
134
  - - ">="
134
135
  - !ruby/object:Gem::Version
135
- version: 1.8.7
136
+ version: 2.0.0
136
137
  required_rubygems_version: !ruby/object:Gem::Requirement
137
138
  requirements:
138
139
  - - ">="
@@ -140,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
141
  version: '0'
141
142
  requirements: []
142
143
  rubyforge_project:
143
- rubygems_version: 2.6.8
144
+ rubygems_version: 2.6.14
144
145
  signing_key:
145
146
  specification_version: 4
146
147
  summary: Google provides a web site to converts currencies using exchange rates but