ccy_convertor 0.0.2 → 1.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 +4 -4
- data/README.md +1 -3
- data/ccy_convertor.gemspec +0 -1
- data/lib/ccy_convertor.rb +0 -4
- data/lib/ccy_convertor/exception.rb +3 -1
- data/lib/ccy_convertor/process_and_validate_option.rb +1 -7
- data/lib/ccy_convertor/rate_providers/currency_layer.rb +7 -2
- data/lib/ccy_convertor/rate_providers/open_exchange_rate.rb +5 -1
- data/lib/ccy_convertor/rate_providers/rate_provider.rb +6 -3
- data/lib/ccy_convertor/version.rb +1 -1
- metadata +11 -28
- data/lib/ccy_convertor/extension.rb +0 -5
- data/lib/ccy_convertor/money.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea00cf636ccf956c5e6ef07a8e0187cc8417ff7e
|
4
|
+
data.tar.gz: acad21629105b1e49f93053f106c13a83ed79c0b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3cf80f94e9cffb418c35363c5ef7248fd2c5900e50ef42b2e6e9e3b65a3b77ad1e0a53b750f6a322b345a67847e5b361dd65ee2233309e0824cd1febcedb6ed
|
7
|
+
data.tar.gz: 756ee7a4664491c997a0f4f66d7d4be84824cbe454489993b8aadc68ab3092ff828d57ce23fd5bdbe9781dd3889a07801f5f6330f2c684ab9af17a3b0a51d7c9
|
data/README.md
CHANGED
@@ -57,13 +57,11 @@ You can convert money from one currency to another in following ways
|
|
57
57
|
Below code will use rate provided from www.openexchangerates.org
|
58
58
|
```ruby
|
59
59
|
CcyConvertor::OpenExchangeRate.convert(from_ccy: 'USD', to_ccy: 'NZD', amount: 10)
|
60
|
-
10.usd.to_nzd(rate_provider: Ccyconvertor::OpenExchangeRate)
|
61
60
|
```
|
62
61
|
|
63
62
|
Below code will use default rate provider. Default rate provider is configurable . Check [configuration section](#configuration)
|
64
63
|
```ruby
|
65
64
|
CcyConvertor.convert(from_ccy: 'USD', to_ccy: 'NZD', amount: 10)
|
66
|
-
10.usd.to_nzd
|
67
65
|
```
|
68
66
|
You can also get all currency rate (rate matrix) with respect to USD in single request for OpenExchangeRate and CurrencyLayer rate provider
|
69
67
|
```ruby
|
@@ -77,7 +75,7 @@ While For Ccyconvertor::CurrencyLayer we can specify the base currency
|
|
77
75
|
Ccyconvertor::CurrencyLayer.rate_matrix('NZD')
|
78
76
|
```
|
79
77
|
All rates returned would be with respect to NZD. If no parameter is given then base currency is USD by default
|
80
|
-
|
78
|
+
|
81
79
|
Note:
|
82
80
|
You cannot provide base currency for free account at currencylayer.com. By defualt base currency will be USD. You need a paid account at currencylayer.com to supply base currency. And Ccyconvertor::YahooFinance do not support rate_matrix method
|
83
81
|
|
data/ccy_convertor.gemspec
CHANGED
data/lib/ccy_convertor.rb
CHANGED
@@ -1,13 +1,10 @@
|
|
1
1
|
require 'active_support/core_ext/string/inflections'
|
2
2
|
require 'active_support/cache.rb'
|
3
|
-
require 'httparty'
|
4
3
|
require 'digest/sha1'
|
5
4
|
|
6
5
|
require 'ccy_convertor/version'
|
7
6
|
require 'ccy_convertor/configuration'
|
8
7
|
require 'ccy_convertor/constant'
|
9
|
-
require 'ccy_convertor/extension'
|
10
|
-
require 'ccy_convertor/money'
|
11
8
|
require 'ccy_convertor/exception'
|
12
9
|
require 'ccy_convertor/rate_cache'
|
13
10
|
require 'ccy_convertor/process_and_validate_option'
|
@@ -19,7 +16,6 @@ require 'ccy_convertor/rate_providers/currency_layer'
|
|
19
16
|
module CcyConvertor
|
20
17
|
class << self
|
21
18
|
def rate(options)
|
22
|
-
RateProvider.process_options!(options)
|
23
19
|
RateProvider.validate_presence_of_hash_keys!(options, [:from_ccy, :to_ccy])
|
24
20
|
rate = rate_provider(options).rate(options[:to_ccy], options[:from_ccy])
|
25
21
|
return rate if CcyConvertor.configuration.round_up_rate.nil?
|
@@ -1,11 +1,5 @@
|
|
1
1
|
module CcyConvertor
|
2
2
|
module ProcessAndValidateOption
|
3
|
-
def process_options!(options)
|
4
|
-
unless options[:money].nil?
|
5
|
-
options.merge!(from_ccy: options[:money].code, amount: options[:money].amount)
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
3
|
def validate_options!(options)
|
10
4
|
validate_presence_of_hash_keys!(options, [:from_ccy, :to_ccy, :amount])
|
11
5
|
validate_amount!(options[:amount])
|
@@ -42,4 +36,4 @@ module CcyConvertor
|
|
42
36
|
end
|
43
37
|
end
|
44
38
|
end
|
45
|
-
end
|
39
|
+
end
|
@@ -6,8 +6,13 @@ module CcyConvertor
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def rate_matrix(base_ccy = nil)
|
9
|
-
|
10
|
-
|
9
|
+
rate_matrix_response = rate_matrix_response(base_ccy)
|
10
|
+
if error = rate_matrix_response['error']
|
11
|
+
raise CcyConvertor::ResponseInvalid, error['info']
|
12
|
+
end
|
13
|
+
rate_matrix_response['quotes'].inject({}) do |acc, (k, v)|
|
14
|
+
acc[k[3, 3]] = v; acc
|
15
|
+
end
|
11
16
|
end
|
12
17
|
end
|
13
18
|
end
|
@@ -6,8 +6,12 @@ module CcyConvertor
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def rate_matrix
|
9
|
+
rate_matrix_response = rate_matrix_response()
|
10
|
+
if rate_matrix_response['error']
|
11
|
+
raise CcyConvertor::ResponseInvalid, rate_matrix_response['description']
|
12
|
+
end
|
9
13
|
rate_matrix_response['rates']
|
10
14
|
end
|
11
15
|
end
|
12
16
|
end
|
13
|
-
end
|
17
|
+
end
|
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'json'
|
3
|
+
|
1
4
|
module CcyConvertor
|
2
5
|
class RateProvider
|
3
6
|
extend CcyConvertor::RateCache
|
@@ -26,7 +29,8 @@ module CcyConvertor
|
|
26
29
|
def response_hash(request_url)
|
27
30
|
cache_key = cache_key(request_url)
|
28
31
|
return cache.read(cache_key) if cache.exist?(cache_key)
|
29
|
-
|
32
|
+
|
33
|
+
response = JSON.parse(Net::HTTP.get(URI(request_url)))
|
30
34
|
cache.write(cache_key, response, expires_in: cache_duration)
|
31
35
|
response
|
32
36
|
end
|
@@ -47,7 +51,6 @@ module CcyConvertor
|
|
47
51
|
alias :rate :rate_from_rate_matrix
|
48
52
|
|
49
53
|
def convert(options)
|
50
|
-
process_options!(options)
|
51
54
|
validate_options!(options)
|
52
55
|
converted_rate = options[:amount] * rate(options[:to_ccy], options[:from_ccy])
|
53
56
|
return converted_rate if CcyConvertor.configuration.round_up_amount.nil?
|
@@ -55,4 +58,4 @@ module CcyConvertor
|
|
55
58
|
end
|
56
59
|
end
|
57
60
|
end
|
58
|
-
end
|
61
|
+
end
|
metadata
CHANGED
@@ -1,71 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ccy_convertor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rohan Pujari
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.6'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '10.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
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: activesupport
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '3.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: httparty
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - '>='
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
55
|
description: CcyConvertor provides live currency rate for various currencies and allows
|
70
56
|
to convert money from one currency to other. Currently it supports 3 rate provider.
|
71
57
|
New rate provider can be easily plugged in
|
@@ -75,7 +61,7 @@ executables: []
|
|
75
61
|
extensions: []
|
76
62
|
extra_rdoc_files: []
|
77
63
|
files:
|
78
|
-
- .gitignore
|
64
|
+
- ".gitignore"
|
79
65
|
- Gemfile
|
80
66
|
- LICENSE.txt
|
81
67
|
- README.md
|
@@ -85,8 +71,6 @@ files:
|
|
85
71
|
- lib/ccy_convertor/configuration.rb
|
86
72
|
- lib/ccy_convertor/constant.rb
|
87
73
|
- lib/ccy_convertor/exception.rb
|
88
|
-
- lib/ccy_convertor/extension.rb
|
89
|
-
- lib/ccy_convertor/money.rb
|
90
74
|
- lib/ccy_convertor/process_and_validate_option.rb
|
91
75
|
- lib/ccy_convertor/rate_cache.rb
|
92
76
|
- lib/ccy_convertor/rate_providers/currency_layer.rb
|
@@ -104,12 +88,12 @@ require_paths:
|
|
104
88
|
- lib
|
105
89
|
required_ruby_version: !ruby/object:Gem::Requirement
|
106
90
|
requirements:
|
107
|
-
- -
|
91
|
+
- - ">="
|
108
92
|
- !ruby/object:Gem::Version
|
109
93
|
version: '0'
|
110
94
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
95
|
requirements:
|
112
|
-
- -
|
96
|
+
- - ">="
|
113
97
|
- !ruby/object:Gem::Version
|
114
98
|
version: '0'
|
115
99
|
requirements: []
|
@@ -120,4 +104,3 @@ specification_version: 4
|
|
120
104
|
summary: CcyConvertor provides live currency rate for various currencies and allows
|
121
105
|
to convert money from one currency to other
|
122
106
|
test_files: []
|
123
|
-
has_rdoc:
|
data/lib/ccy_convertor/money.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
module CcyConvertor
|
2
|
-
class Money
|
3
|
-
attr_accessor :code, :name, :amount
|
4
|
-
|
5
|
-
def initialize(code, amount)
|
6
|
-
@code = code
|
7
|
-
@amount = amount
|
8
|
-
end
|
9
|
-
|
10
|
-
def name
|
11
|
-
CcyConvertor::Constant::CCY_CODE_AND_NAME[code]
|
12
|
-
end
|
13
|
-
|
14
|
-
CcyConvertor::Constant::CCY_CODE_AND_NAME.each do |code, name|
|
15
|
-
define_method("to_#{code.downcase}") do |options = {}|
|
16
|
-
options.merge!(money: self, to_ccy: code)
|
17
|
-
CcyConvertor.convert(options)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|