apilayer 1.3.0 → 1.4.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.rdoc +15 -0
- data/lib/apilayer/currency.rb +49 -9
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82aeeda21050efb48e62a0d2fb4b9ebe46a7acc8
|
4
|
+
data.tar.gz: 101b15014092486700fea46ad8b5fb31ea097918
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0a3603cf06becdddee31d8d8b48e51a7aa9149583ebba6bf501d81896627616ded7734d6a950b7afc7add8d6cb372bda235532e48298084714a97841b1cf9df
|
7
|
+
data.tar.gz: b0006ad23396afc3cd707dc500b71f3e193a26a8a18d37c23dfeec047879602c2fe878d5f8b46d10ad7f5996d66539bd5cb96cc93e520d46271261c1ba9727e3
|
data/README.rdoc
CHANGED
@@ -3,6 +3,9 @@
|
|
3
3
|
Ruby wrapper for various services of apilayer.
|
4
4
|
See http://apilayer.com for more details.
|
5
5
|
|
6
|
+
=== Version 1.4
|
7
|
+
Added .change and .list to Apilayer::Currency
|
8
|
+
|
6
9
|
=== Version 1.3
|
7
10
|
Added .timeframe to Apilayer::Currency
|
8
11
|
|
@@ -44,6 +47,8 @@ Once that is done, you are ready to go
|
|
44
47
|
|
45
48
|
==== currencylayer
|
46
49
|
After setting the access_key for *currencylayer*, you can use Apilayer::Currency to call *currencylayer*'s API
|
50
|
+
Apilayer::Currency.list
|
51
|
+
|
47
52
|
Apilayer::Currency.live
|
48
53
|
Apilayer::Currency.live(:currencies => %w[GBP, CHF])
|
49
54
|
Apilayer::Currency.live(:source => "EUR") # source-currency is USD by default
|
@@ -61,6 +66,16 @@ After setting the access_key for *currencylayer*, you can use Apilayer::Currency
|
|
61
66
|
Apilayer::Currency.timeframe("2016-01-01", "2016-06-01", :currencies => %w[GBP CHF])
|
62
67
|
Apilayer::Currency.timeframe("2016-01-01", "2016-06-01", :source => "EUR")
|
63
68
|
Apilayer::Currency.timeframe("2016-01-01", "2016-06-01", :currencies => %w[GBP CHF], :source => "EUR")
|
69
|
+
|
70
|
+
Apilayer::Currency.change
|
71
|
+
Apilayer::Currency.change("2016-01-01", "2016-03-01")
|
72
|
+
Apilayer::Currency.change("2016-01-01", "2016-03-01", :source => "EUR")
|
73
|
+
Apilayer::Currency.change("2016-01-01", "2016-03-01", :currencies => %w[GBP CHF])
|
74
|
+
Apilayer::Currency.change("2016-01-01", "2016-03-01", :source => "EUR", :currencies => %w[GBP CHF])
|
75
|
+
Apilayer::Currency.change(nil, nil, {:source => "EUR"})
|
76
|
+
Apilayer::Currency.change(nil, nil, {:currencies => %w[GBP CHF]})
|
77
|
+
Apilayer::Currency.change(nil, nil, {:source => "EUR", :currencies => %w[GBP CHF]})
|
78
|
+
|
64
79
|
==== vatlayer
|
65
80
|
After setting the access_key for *vatlayer*, you can use Apilayer::Vat to call *vatlayer*'s API
|
66
81
|
|
data/lib/apilayer/currency.rb
CHANGED
@@ -9,10 +9,13 @@ module Apilayer
|
|
9
9
|
# in order to to make a connection to currencylayer
|
10
10
|
APILAYER_CONFIG_KEY = :currency_key
|
11
11
|
INVALID_OPTIONS_MSG = "You have provided an invalid option. Allowed options are :currencies and :source"
|
12
|
+
INVALID_TIMEFRAME_MSG = "start_date and end_date must be either provided together or left out together."
|
12
13
|
LIVE_SLUG = "live"
|
13
14
|
HISTORICAL_SLUG = "historical"
|
14
15
|
CONVERT_SLUG = "convert"
|
15
16
|
TIMEFRAME_SLUG = "timeframe"
|
17
|
+
CHANGE_SLUG = "change"
|
18
|
+
LIST_SLUG = "list"
|
16
19
|
|
17
20
|
## Validations
|
18
21
|
#
|
@@ -24,13 +27,24 @@ module Apilayer
|
|
24
27
|
end
|
25
28
|
end
|
26
29
|
|
30
|
+
def self.validate_timeframe_completeness(start_date,end_date)
|
31
|
+
if [start_date,end_date].compact.size == 1
|
32
|
+
raise Apilayer::Error.new(INVALID_TIMEFRAME_MSG)
|
33
|
+
end
|
34
|
+
end
|
27
35
|
### API methods
|
28
36
|
#
|
29
37
|
|
38
|
+
##
|
39
|
+
# Api-Method: Calls the /list endpoint to display all supported currencies
|
40
|
+
def self.list
|
41
|
+
get_and_parse LIST_SLUG
|
42
|
+
end
|
43
|
+
|
30
44
|
##
|
31
45
|
# Api-Method: Calls the /live endpoint to get real-time exchange rates.
|
32
46
|
# When no currency-codes are specified, it will return all exchange rates for your source-currency.
|
33
|
-
#
|
47
|
+
# Examples:
|
34
48
|
# Apilayer::Currency.live
|
35
49
|
# Apilayer::Currency.live(:currencies => %w[GBP, CHF])
|
36
50
|
# Apilayer::Currency.live(:source => "EUR")
|
@@ -48,7 +62,7 @@ module Apilayer
|
|
48
62
|
##
|
49
63
|
# Api-Method: Calls the /historical endpoint to get exchange rates for a specific date.
|
50
64
|
# When no currency-codes are specified, it will return all exchange rates for your source-currency.
|
51
|
-
#
|
65
|
+
# Examples:
|
52
66
|
# Apilayer::Currency.historical("2016-01-01")
|
53
67
|
# Apilayer::Currency.historical("2016-01-01", :currencies => %w[GBP CHF])
|
54
68
|
# Apilayer::Currency.historical(:source => "EUR")
|
@@ -67,9 +81,9 @@ module Apilayer
|
|
67
81
|
##
|
68
82
|
# Api-Method: Calls the /convert endpoint, requires :from, :to and :amount
|
69
83
|
# When :date hasn't been passed, the latest available exchange rates will be used for your conversion.
|
70
|
-
#
|
84
|
+
# Examples:
|
71
85
|
# Apilayer::Currency.convert("EUR", "CHF", 100)
|
72
|
-
# Apilayer::Currency.convert("EUR", "CHF", 100, "2015-
|
86
|
+
# Apilayer::Currency.convert("EUR", "CHF", 100, "2015-03-01")
|
73
87
|
def self.convert(from, to, amount, date=nil)
|
74
88
|
params = {:from => from, :to => to, :amount => amount}
|
75
89
|
params.merge!(:date => date) if date
|
@@ -81,22 +95,47 @@ module Apilayer
|
|
81
95
|
# If :currencies hasn't been provided as an option, it will return all exchange-rates for that period of your source-currency
|
82
96
|
# :source can be provided as option to change the source-currency, which is USD by default
|
83
97
|
# The difference between start_date and end_date can be maximum 365 days
|
84
|
-
#
|
85
|
-
# Apilayer::Currency.timeframe("2016-01-01", "2016-
|
86
|
-
# Apilayer::Currency.timeframe("2016-01-01", "2016-
|
87
|
-
# Apilayer::Currency.timeframe("2016-01-01", "2016-
|
98
|
+
# Examples:
|
99
|
+
# Apilayer::Currency.timeframe("2016-01-01", "2016-03-01")
|
100
|
+
# Apilayer::Currency.timeframe("2016-01-01", "2016-03-01", :currencies => %w[GBP CHF])
|
101
|
+
# Apilayer::Currency.timeframe("2016-01-01", "2016-03-01", :currencies => %w[GBP CHF], :source => "EUR")
|
88
102
|
def self.timeframe(start_date, end_date, opts={})
|
89
103
|
validate_options(opts)
|
90
104
|
params = {:start_date => start_date, :end_date => end_date}
|
91
105
|
get_and_parse_with_options(TIMEFRAME_SLUG, opts, params)
|
92
106
|
end
|
93
107
|
|
94
|
-
##
|
108
|
+
##
|
109
|
+
# Api-Method: Calls the /change endpoint.
|
110
|
+
# start_date and end_date are optional, but can't provide one without the other
|
111
|
+
# :currencies and :source are optional
|
112
|
+
# Examples:
|
113
|
+
# Apilayer::Currency.change
|
114
|
+
# Apilayer::Currency.change("2016-01-01", "2016-03-01")
|
115
|
+
# Apilayer::Currency.change("2016-01-01", "2016-03-01", :source => "EUR")
|
116
|
+
# Apilayer::Currency.change("2016-01-01", "2016-03-01", :currencies => %w[GBP CHF])
|
117
|
+
# Apilayer::Currency.change("2016-01-01", "2016-03-01", :source => "EUR", :currencies => %w[GBP CHF])
|
118
|
+
# Apilayer::Currency.change(nil, nil, {:source => "EUR"})
|
119
|
+
# Apilayer::Currency.change(nil, nil, {:currencies => %w[GBP CHF]})
|
120
|
+
# Apilayer::Currency.change(nil, nil, {:source => "EUR", :currencies => %w[GBP CHF]})
|
121
|
+
def self.change(start_date=nil, end_date=nil, opts={})
|
122
|
+
validate_options(opts)
|
123
|
+
validate_timeframe_completeness(start_date,end_date)
|
124
|
+
params = {:start_date => start_date,
|
125
|
+
:end_date => end_date
|
126
|
+
}.reject{ |k,v| v.nil? }
|
127
|
+
get_and_parse_with_options(CHANGE_SLUG, opts, params)
|
128
|
+
end
|
129
|
+
|
130
|
+
##
|
131
|
+
#
|
95
132
|
def self.get_and_parse_with_options(slug, opts, params={})
|
96
133
|
params = add_options_to_params(opts, params)
|
97
134
|
get_and_parse(slug, params)
|
98
135
|
end
|
99
136
|
|
137
|
+
##
|
138
|
+
# Adds currencies and source to query string if they have been provided with options-hash
|
100
139
|
def self.add_options_to_params(opts, params)
|
101
140
|
if opts[:currencies] && opts[:currencies].any?
|
102
141
|
params[:currencies] = join_by_commas(opts[:currencies])
|
@@ -106,6 +145,7 @@ module Apilayer
|
|
106
145
|
end
|
107
146
|
params
|
108
147
|
end
|
148
|
+
|
109
149
|
##
|
110
150
|
# Joins currencies in an array as a comma-separated-string
|
111
151
|
def self.join_by_commas(currencies)
|