forexrateapi 1.0.1 → 1.3.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/LICENSE.md +1 -1
- data/README.md +79 -10
- data/lib/forexrateapi/client.rb +8 -0
- data/lib/forexrateapi/config.rb +6 -1
- data/lib/forexrateapi/endpoints/index.rb +33 -5
- data/lib/forexrateapi/version.rb +1 -1
- metadata +14 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1b95736b9d870b217de0a86b67ba39d66e188e3f98c2fcbc14b26510751c99a0
|
|
4
|
+
data.tar.gz: e592a8251ac179ed60bb3341b074e1c3ecd8ef336804e3aea3b7f5a8143023d6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f168941bd8dc7f4c8dd9009968c34b4e5fd47c9c7a21336cc40c5630c605df7ef80a3e71864adc4b7a7f2993c4788be39b421418f2d577bc259ed99114e749a7
|
|
7
|
+
data.tar.gz: e3aa765aa0cb5ee99d4233768168198c267dee0d46dbbfa718e98fc4aa423193da665537b36ae72977296416d4c8f48d5056bfb141139e36bfc27e65c5456ead
|
data/LICENSE.md
CHANGED
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ForexRateAPI
|
|
2
2
|
|
|
3
|
-
forexrateapi is the official
|
|
3
|
+
forexrateapi is the official Ruby wrapper for ForexRateAPI.com. This allows you to quickly integrate our foreign exchange rate API and currency conversion API into your application. Check https://forexrateapi.com documentation for more information.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
Add to Gemfile.
|
|
@@ -15,7 +15,28 @@ gem 'forexrateapi'
|
|
|
15
15
|
|
|
16
16
|
api_key = 'SET_YOUR_API_KEY_HERE'
|
|
17
17
|
client = ForexRateAPI::Client.new(api_key: api_key)
|
|
18
|
+
|
|
19
|
+
# Or use EU server:
|
|
20
|
+
# client = ForexRateAPI::Client.new(api_key: api_key, server: 'eu')
|
|
21
|
+
```
|
|
22
|
+
---
|
|
23
|
+
## Server Regions
|
|
24
|
+
|
|
25
|
+
ForexRateAPI provides two regional endpoints. Choose the one closest to your servers for optimal performance.
|
|
26
|
+
|
|
27
|
+
| Region | Base URL |
|
|
28
|
+
|--------|----------|
|
|
29
|
+
| United States (default) | `https://api.forexrateapi.com/v1` |
|
|
30
|
+
| Europe | `https://api-eu.forexrateapi.com/v1` |
|
|
31
|
+
|
|
32
|
+
```ruby
|
|
33
|
+
# Default (US)
|
|
34
|
+
client = ForexRateAPI::Client.new(api_key: 'SET_YOUR_API_KEY_HERE')
|
|
35
|
+
|
|
36
|
+
# Europe
|
|
37
|
+
client = ForexRateAPI::Client.new(api_key: 'SET_YOUR_API_KEY_HERE', server: 'eu')
|
|
18
38
|
```
|
|
39
|
+
|
|
19
40
|
---
|
|
20
41
|
## Documentation
|
|
21
42
|
|
|
@@ -27,13 +48,23 @@ client.fetchSymbols()
|
|
|
27
48
|
[Link](https://forexrateapi.com/documentation#api_symbol)
|
|
28
49
|
|
|
29
50
|
---
|
|
30
|
-
####
|
|
51
|
+
#### setServer(server)
|
|
52
|
+
|
|
53
|
+
- `server` <[string]> Pass `'eu'` to use the EU server (`api-eu.forexrateapi.com`), or `'us'` for the US server. Defaults to US if not specified.
|
|
54
|
+
|
|
55
|
+
```ruby
|
|
56
|
+
client.setServer('eu')
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
#### fetchLive(base, currencies, math)
|
|
31
61
|
|
|
32
62
|
- `base` <[string]> Optional. Pass in a base currency, defaults to USD.
|
|
33
63
|
- `currencies` <[Array]<[string]>> Optional. Pass in an array of currencies to return values for.
|
|
64
|
+
- `math` <[string]> Optional. Pass in a math expression to apply to the rates.
|
|
34
65
|
|
|
35
66
|
```ruby
|
|
36
|
-
client.fetchLive(
|
|
67
|
+
client.fetchLive('USD', ['AUD', 'CAD', 'GBP', 'JPY'])
|
|
37
68
|
```
|
|
38
69
|
|
|
39
70
|
[Link](https://forexrateapi.com/documentation#api_realtime)
|
|
@@ -46,11 +77,41 @@ client.fetchLive(base='USD', currencies=['AUD', 'CAD', 'GBP', 'JPY'])
|
|
|
46
77
|
- `currencies` <[Array]<[string]>> Optional. Pass in an array of currencies to return values for.
|
|
47
78
|
|
|
48
79
|
```ruby
|
|
49
|
-
client.fetchHistorical(
|
|
80
|
+
client.fetchHistorical('2024-02-05', 'USD', ['AUD', 'CAD', 'GBP', 'JPY'])
|
|
50
81
|
```
|
|
51
82
|
|
|
52
83
|
[Link](https://forexrateapi.com/documentation#api_historical)
|
|
53
84
|
|
|
85
|
+
---
|
|
86
|
+
#### hourly(base, currency, start_date, end_date, math, date_type)
|
|
87
|
+
|
|
88
|
+
- `base` <[string]> Optional. Pass in a base currency, defaults to USD.
|
|
89
|
+
- `currency` <[string]> Required. Specify currency you would like to get hourly rates for.
|
|
90
|
+
- `start_date` <[string]> Required. Specify the start date using the format `YYYY-MM-DD`.
|
|
91
|
+
- `end_date` <[string]> Required. Specify the end date using the format `YYYY-MM-DD`.
|
|
92
|
+
- `math` <[string]> Optional. Pass in a math expression to apply to the rates.
|
|
93
|
+
- `date_type` <[string]> Optional. Pass in a date type, overrides date parameters if passed in.
|
|
94
|
+
|
|
95
|
+
```ruby
|
|
96
|
+
client.hourly('USD', 'EUR', '2024-02-05', '2024-02-05')
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
[Link](https://forexrateapi.com/documentation#api_hourly)
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
#### ohlc(base, currency, date, date_type)
|
|
103
|
+
|
|
104
|
+
- `base` <[string]> Optional. Pass in a base currency, defaults to USD.
|
|
105
|
+
- `currency` <[string]> Required. Specify currency you would like to get OHLC for.
|
|
106
|
+
- `date` <[string]> Required. Specify date to get OHLC for specific date using format `YYYY-MM-DD`.
|
|
107
|
+
- `date_type` <[string]> Optional. Pass in a date type, overrides date parameter if passed in.
|
|
108
|
+
|
|
109
|
+
```ruby
|
|
110
|
+
client.ohlc('USD', 'EUR', '2024-02-05', nil)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
[Link](https://forexrateapi.com/documentation#api_ohlc)
|
|
114
|
+
|
|
54
115
|
---
|
|
55
116
|
#### convert(from_currency, to_currency, amount, date)
|
|
56
117
|
|
|
@@ -60,7 +121,7 @@ client.fetchHistorical(date='2021-04-05', base='USD', currencies=['AUD', 'CAD',
|
|
|
60
121
|
- `date` <[string]> Optional. Specify date to use historical midpoint value for conversion with format `YYYY-MM-DD`. Otherwise, it will use live exchange rate date if value not passed in.
|
|
61
122
|
|
|
62
123
|
```ruby
|
|
63
|
-
client.convert(
|
|
124
|
+
client.convert('USD', 'EUR', 100, '2024-02-05')
|
|
64
125
|
```
|
|
65
126
|
|
|
66
127
|
[Link](https://forexrateapi.com/documentation#api_convert)
|
|
@@ -74,29 +135,37 @@ client.convert(from_currency='USD', to_currency='EUR', amount=100, date='2021-04
|
|
|
74
135
|
- `currencies` <[Array]<[string]>> Optional. Pass in an array of currencies to return values for.
|
|
75
136
|
|
|
76
137
|
```ruby
|
|
77
|
-
client.timeframe(
|
|
138
|
+
client.timeframe('2024-02-05', '2024-02-06', 'USD', ['AUD', 'CAD', 'GBP', 'JPY'])
|
|
78
139
|
```
|
|
79
140
|
|
|
80
141
|
[Link](https://forexrateapi.com/documentation#api_timeframe)
|
|
81
142
|
|
|
82
143
|
---
|
|
83
|
-
#### change(start_date, end_date, base, currencies)
|
|
144
|
+
#### change(start_date, end_date, base, currencies, date_type)
|
|
84
145
|
|
|
85
146
|
- `start_date` <[string]> Required. Specify the start date of your timeframe using the format `YYYY-MM-DD`.
|
|
86
147
|
- `end_date` <[string]> Required. Specify the end date of your timeframe using the format `YYYY-MM-DD`.
|
|
87
148
|
- `base` <[string]> Optional. Pass in a base currency, defaults to USD.
|
|
88
149
|
- `currencies` <[Array]<[string]>> Optional. Pass in an array of currencies to return values for.
|
|
150
|
+
- `date_type` <[string]> Optional. Pass in a date type, overrides date parameters if passed in.
|
|
89
151
|
|
|
90
152
|
```ruby
|
|
91
|
-
client.change(
|
|
153
|
+
client.change('2024-02-05', '2024-02-06', 'USD', ['AUD', 'CAD', 'GBP', 'JPY'])
|
|
92
154
|
```
|
|
93
155
|
|
|
94
156
|
[Link](https://forexrateapi.com/documentation#api_change)
|
|
95
157
|
|
|
96
158
|
---
|
|
97
|
-
|
|
159
|
+
#### usage()
|
|
98
160
|
|
|
161
|
+
```ruby
|
|
162
|
+
client.usage()
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
[Link](https://forexrateapi.com/documentation#api_usage)
|
|
99
166
|
|
|
167
|
+
---
|
|
168
|
+
**[Official documentation](https://forexrateapi.com/documentation)**
|
|
100
169
|
---
|
|
101
170
|
## FAQ
|
|
102
171
|
|
|
@@ -116,4 +185,4 @@ For support, get in touch using [this form](https://forexrateapi.com/contact).
|
|
|
116
185
|
|
|
117
186
|
[Array]: https://www.geeksforgeeks.org/ruby-data-types/ 'Array'
|
|
118
187
|
[number]: https://www.geeksforgeeks.org/ruby-data-types/ 'Number'
|
|
119
|
-
[string]: https://apidock.com/ruby/String 'String'
|
|
188
|
+
[string]: https://apidock.com/ruby/String 'String'
|
data/lib/forexrateapi/client.rb
CHANGED
|
@@ -12,9 +12,17 @@ module ForexRateAPI
|
|
|
12
12
|
ForexRateAPI::Config::ATTRIBUTES.each do |key|
|
|
13
13
|
send("#{key}=", options[key] || ForexRateAPI.config.send(key))
|
|
14
14
|
end
|
|
15
|
+
if options[:server]
|
|
16
|
+
self.endpoint = Config::SERVERS[options[:server]] || Config::SERVERS['us']
|
|
17
|
+
end
|
|
15
18
|
@logger ||= ForexRateAPI::Logger.logger
|
|
16
19
|
end
|
|
17
20
|
|
|
21
|
+
def setServer(server)
|
|
22
|
+
self.endpoint = Config::SERVERS[server] || Config::SERVERS['us']
|
|
23
|
+
@connection = nil
|
|
24
|
+
end
|
|
25
|
+
|
|
18
26
|
class << self
|
|
19
27
|
def configure
|
|
20
28
|
block_given? ? yield(Config) : Config
|
data/lib/forexrateapi/config.rb
CHANGED
|
@@ -4,6 +4,11 @@ module ForexRateAPI
|
|
|
4
4
|
module Config
|
|
5
5
|
extend self
|
|
6
6
|
|
|
7
|
+
SERVERS = {
|
|
8
|
+
'us' => 'https://api.forexrateapi.com/v1',
|
|
9
|
+
'eu' => 'https://api-eu.forexrateapi.com/v1'
|
|
10
|
+
}.freeze
|
|
11
|
+
|
|
7
12
|
ATTRIBUTES = %i[
|
|
8
13
|
endpoint
|
|
9
14
|
api_key
|
|
@@ -19,7 +24,7 @@ module ForexRateAPI
|
|
|
19
24
|
attr_accessor(*Config::ATTRIBUTES)
|
|
20
25
|
|
|
21
26
|
def reset
|
|
22
|
-
self.endpoint = '
|
|
27
|
+
self.endpoint = SERVERS['us']
|
|
23
28
|
self.api_key = nil
|
|
24
29
|
self.user_agent = "ForexRateAPI Ruby Client/#{ForexRateAPI::VERSION}"
|
|
25
30
|
self.ca_path = defined?(OpenSSL) ? OpenSSL::X509::DEFAULT_CERT_DIR : nil
|
|
@@ -6,10 +6,11 @@ module ForexRateAPI
|
|
|
6
6
|
get('symbols')
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
def fetchLive(base = nil, currencies = nil)
|
|
9
|
+
def fetchLive(base = nil, currencies = nil, math = nil)
|
|
10
10
|
options = removeEmpty({
|
|
11
11
|
base: base,
|
|
12
|
-
currencies: (currencies || []).join(',')
|
|
12
|
+
currencies: (currencies || []).join(','),
|
|
13
|
+
math: math
|
|
13
14
|
})
|
|
14
15
|
get('latest', options)
|
|
15
16
|
end
|
|
@@ -22,6 +23,28 @@ module ForexRateAPI
|
|
|
22
23
|
get(date, options)
|
|
23
24
|
end
|
|
24
25
|
|
|
26
|
+
def hourly(base = nil, currency = nil, start_date = nil, end_date = nil, math = nil, date_type = nil)
|
|
27
|
+
options = removeEmpty({
|
|
28
|
+
base: base,
|
|
29
|
+
currency: currency,
|
|
30
|
+
start_date: start_date,
|
|
31
|
+
end_date: end_date,
|
|
32
|
+
math: math,
|
|
33
|
+
date_type: date_type
|
|
34
|
+
})
|
|
35
|
+
get('hourly', options)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def ohlc(base = nil, currency = nil, date = nil, date_type = nil)
|
|
39
|
+
options = removeEmpty({
|
|
40
|
+
base: base,
|
|
41
|
+
currency: currency,
|
|
42
|
+
date: date,
|
|
43
|
+
date_type: date_type
|
|
44
|
+
})
|
|
45
|
+
get('ohlc', options)
|
|
46
|
+
end
|
|
47
|
+
|
|
25
48
|
def convert(from_currency = nil, to_currency = nil, amount = nil, date = nil)
|
|
26
49
|
options = removeEmpty({
|
|
27
50
|
'from': from_currency,
|
|
@@ -42,21 +65,26 @@ module ForexRateAPI
|
|
|
42
65
|
get('timeframe', options)
|
|
43
66
|
end
|
|
44
67
|
|
|
45
|
-
def change(start_date, end_date, base =
|
|
68
|
+
def change(start_date, end_date, base = nil, currencies = nil, date_type = nil)
|
|
46
69
|
options = removeEmpty({
|
|
47
70
|
'start_date': start_date,
|
|
48
71
|
'end_date': end_date,
|
|
49
72
|
'base': base,
|
|
50
|
-
'currencies': (currencies || []).join(',')
|
|
73
|
+
'currencies': (currencies || []).join(','),
|
|
74
|
+
'date_type': date_type
|
|
51
75
|
})
|
|
52
76
|
get('change', options)
|
|
53
77
|
end
|
|
54
78
|
|
|
79
|
+
def usage
|
|
80
|
+
get('usage')
|
|
81
|
+
end
|
|
82
|
+
|
|
55
83
|
private
|
|
56
84
|
|
|
57
85
|
def removeEmpty(options)
|
|
58
86
|
options.each do |key, value|
|
|
59
|
-
if (
|
|
87
|
+
if (value.nil? || value == '')
|
|
60
88
|
options.delete(key)
|
|
61
89
|
end
|
|
62
90
|
end
|
data/lib/forexrateapi/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: forexrateapi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- ForexRateAPI
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-02-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.0'
|
|
17
20
|
- - ">="
|
|
18
21
|
- !ruby/object:Gem::Version
|
|
19
22
|
version: 1.0.0
|
|
@@ -21,6 +24,9 @@ dependencies:
|
|
|
21
24
|
prerelease: false
|
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
26
|
requirements:
|
|
27
|
+
- - "~>"
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '1.0'
|
|
24
30
|
- - ">="
|
|
25
31
|
- !ruby/object:Gem::Version
|
|
26
32
|
version: 1.0.0
|
|
@@ -28,16 +34,16 @@ dependencies:
|
|
|
28
34
|
name: faraday_middleware
|
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
|
30
36
|
requirements:
|
|
31
|
-
- - "
|
|
37
|
+
- - "~>"
|
|
32
38
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
39
|
+
version: '1.0'
|
|
34
40
|
type: :runtime
|
|
35
41
|
prerelease: false
|
|
36
42
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
43
|
requirements:
|
|
38
|
-
- - "
|
|
44
|
+
- - "~>"
|
|
39
45
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
46
|
+
version: '1.0'
|
|
41
47
|
description:
|
|
42
48
|
email: contact@forexrateapi.com
|
|
43
49
|
executables: []
|
|
@@ -70,14 +76,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
70
76
|
requirements:
|
|
71
77
|
- - ">="
|
|
72
78
|
- !ruby/object:Gem::Version
|
|
73
|
-
version: '
|
|
79
|
+
version: '2.7'
|
|
74
80
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
81
|
requirements:
|
|
76
82
|
- - ">="
|
|
77
83
|
- !ruby/object:Gem::Version
|
|
78
84
|
version: '0'
|
|
79
85
|
requirements: []
|
|
80
|
-
rubygems_version: 3.
|
|
86
|
+
rubygems_version: 3.5.22
|
|
81
87
|
signing_key:
|
|
82
88
|
specification_version: 4
|
|
83
89
|
summary: Official ForexRateAPI Ruby client.
|