omni_exchange 1.8.0 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c10147e9b33c5288fe9d59249c2d51ff23e5fbf2be87f352fa59e6244b2949f8
4
- data.tar.gz: beff303239c412ff7e4d2691319be4fce1cf7c1424d2589397900f5c45184c21
3
+ metadata.gz: 3ae87cd7a839738c4e8a91ff800a1c0f5867c74540b90bdc69d2d7e1091cae8c
4
+ data.tar.gz: 84c043b737c6e7ad350dbedc02b4398059526f3ab39d282ee9d4f3cc07363653
5
5
  SHA512:
6
- metadata.gz: cdb12eb02901081566e65046c780f02eea5691689b9d4fd7fa646f6acee57686d2eab1138a0c289ae893930076ba099235ed46fb3e1a95ca64815122502c8ee5
7
- data.tar.gz: c049ff4bc1946d7c87018f308beb7cffca268bae4601c3796447c22acef34118e5e50cb5aa004b012e690e15714c0b10342b0226bafb6c6a3a51d53266dd2365
6
+ metadata.gz: bb39b4b6f07e8c7539055aa08e073b8a96c768537950b0c23053c03d978167f5c31d1ee3220125d41ca507d79a8956de7066f96041096d8d69f161a6a86a0fa4
7
+ data.tar.gz: f4b145799b92ba721a559db9623e188a9957877b87bffe6e7a899f3bb57469273882790627ad9e74b6fe8c3f42efbc6f34cfdc8f39fbabce161a2cb9a99843e5
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- omni_exchange (1.8.0)
5
- faraday (< 2)
4
+ omni_exchange (2.0.0)
5
+ faraday (~> 2)
6
6
  money (~> 6.13.1)
7
7
 
8
8
  GEM
@@ -10,38 +10,20 @@ GEM
10
10
  specs:
11
11
  ast (2.4.2)
12
12
  coderay (1.1.3)
13
- concurrent-ruby (1.1.10)
13
+ concurrent-ruby (1.2.3)
14
14
  diff-lcs (1.5.0)
15
15
  dotenv (2.8.1)
16
- faraday (1.10.3)
17
- faraday-em_http (~> 1.0)
18
- faraday-em_synchrony (~> 1.0)
19
- faraday-excon (~> 1.1)
20
- faraday-httpclient (~> 1.0)
21
- faraday-multipart (~> 1.0)
22
- faraday-net_http (~> 1.0)
23
- faraday-net_http_persistent (~> 1.0)
24
- faraday-patron (~> 1.0)
25
- faraday-rack (~> 1.0)
26
- faraday-retry (~> 1.0)
27
- ruby2_keywords (>= 0.0.4)
28
- faraday-em_http (1.0.0)
29
- faraday-em_synchrony (1.0.0)
30
- faraday-excon (1.1.0)
31
- faraday-httpclient (1.0.1)
32
- faraday-multipart (1.0.4)
33
- multipart-post (~> 2)
34
- faraday-net_http (1.0.1)
35
- faraday-net_http_persistent (1.2.0)
36
- faraday-patron (1.0.0)
37
- faraday-rack (1.0.0)
38
- faraday-retry (1.0.3)
39
- i18n (1.12.0)
16
+ faraday (2.9.0)
17
+ faraday-net_http (>= 2.0, < 3.2)
18
+ faraday-net_http (3.1.0)
19
+ net-http
20
+ i18n (1.14.4)
40
21
  concurrent-ruby (~> 1.0)
41
22
  method_source (1.0.0)
42
23
  money (6.13.8)
43
24
  i18n (>= 0.6.4, <= 2)
44
- multipart-post (2.3.0)
25
+ net-http (0.4.1)
26
+ uri
45
27
  parallel (1.22.1)
46
28
  parser (3.1.2.1)
47
29
  ast (~> 2.4.1)
@@ -77,8 +59,8 @@ GEM
77
59
  rubocop-ast (1.21.0)
78
60
  parser (>= 3.1.1.0)
79
61
  ruby-progressbar (1.11.0)
80
- ruby2_keywords (0.0.5)
81
62
  unicode-display_width (1.8.0)
63
+ uri (0.13.0)
82
64
  vcr (6.1.0)
83
65
 
84
66
  PLATFORMS
@@ -23,10 +23,7 @@ module OmniExchange
23
23
  req.params['symbols'] = target_currency
24
24
  end
25
25
 
26
- exchange_rate = body['rates'][target_currency].to_d
27
- currency_unit = get_currency_unit(base_currency).to_d
28
-
29
- (exchange_rate * currency_unit).to_d
26
+ body['rates'][target_currency].to_d
30
27
  end
31
28
 
32
29
  def get_historic_rate(base_currency:, target_currencies:, date:)
@@ -37,10 +34,7 @@ module OmniExchange
37
34
  req.params['symbols'] = target_currencies.join(',')
38
35
  end
39
36
 
40
- currency_unit = get_currency_unit(base_currency).to_d
41
- body['rates'].transform_values do |rate|
42
- (rate * currency_unit).to_d
43
- end
37
+ body['rates']
44
38
  end
45
39
 
46
40
  private
@@ -17,14 +17,12 @@ module OmniExchange
17
17
  # rate will be used to calculate an convert an exchange of currencies. However, an exception will be raised
18
18
  # if there is a timeout while connecting to xe.com or a timeout while reading xe.com's API.
19
19
  def get_exchange_rate(base_currency:, target_currency:)
20
- currency_unit = get_currency_unit(base_currency)
21
-
22
20
  body = api_get do |req|
23
21
  req.url 'v1/convert_from.json'
24
22
 
25
23
  req.params['from'] = base_currency
26
24
  req.params['to'] = target_currency
27
- req.params['amount'] = currency_unit
25
+ req.params['amount'] = 1
28
26
  end
29
27
 
30
28
  body[:to][0][:mid].to_d
@@ -38,14 +36,12 @@ module OmniExchange
38
36
  # exchanging to. ie. ["EUR", "KRW"]
39
37
  # @param date: [Date] the date for which you want the historic exchange rate.
40
38
  def get_historic_rate(base_currency:, target_currencies:, date:)
41
- currency_unit = get_currency_unit(base_currency)
42
-
43
39
  body = api_get do |req|
44
40
  req.url 'v1/historic_rate.json'
45
41
 
46
42
  req.params['from'] = base_currency
47
43
  req.params['to'] = target_currencies.join(',')
48
- req.params['amount'] = currency_unit
44
+ req.params['amount'] = 1
49
45
  req.params['date'] = date.strftime('%Y-%m-%d')
50
46
  end
51
47
 
@@ -81,7 +77,7 @@ module OmniExchange
81
77
  api_key = config[:api_key]
82
78
 
83
79
  Faraday.new(OmniExchange::Xe::ENDPOINT_URL) do |f|
84
- f.request :basic_auth, api_id, api_key
80
+ f.set_basic_auth api_id, api_key
85
81
  f.adapter :net_http
86
82
  end
87
83
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OmniExchange
4
- VERSION = '1.8.0'
4
+ VERSION = '2.0.0'
5
5
  end
data/lib/omni_exchange.rb CHANGED
@@ -116,14 +116,19 @@ module OmniExchange
116
116
  error_messages = []
117
117
 
118
118
  provider_classes.each do |klass|
119
- return klass.get_exchange_rate(base_currency: base_currency,
119
+ rate = klass.get_exchange_rate(base_currency: base_currency,
120
120
  target_currency: target_currency)
121
121
 
122
+ return {
123
+ rate: rate,
124
+ provider: OmniExchange::Provider.all.key(klass)
125
+ }
126
+
122
127
  rescue *EXCEPTIONS, OmniExchange::XeMonthlyLimit, JSON::ParserError => e
123
128
  error_messages << e.inspect
124
129
  end
125
130
 
126
- raise OmniExchange::HttpError, "Failed to get historic rate:\n" \
131
+ raise OmniExchange::HttpError, "Failed to get exchange rate:\n" \
127
132
  "#{error_messages.join("\n")}"
128
133
  end
129
134
 
@@ -146,9 +151,14 @@ module OmniExchange
146
151
  error_messages = []
147
152
 
148
153
  provider_classes.each do |klass|
149
- return klass.get_historic_rate(base_currency: base_currency,
150
- target_currencies: target_currencies,
151
- date: date)
154
+ rates = klass.get_historic_rate(base_currency: base_currency,
155
+ target_currencies: target_currencies,
156
+ date: date)
157
+
158
+ return {
159
+ rates: rates,
160
+ provider: OmniExchange::Provider.all.key(klass)
161
+ }
152
162
 
153
163
  rescue *EXCEPTIONS, OmniExchange::XeMonthlyLimit, JSON::ParserError => e
154
164
  error_messages << e.inspect
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ['lib']
29
29
 
30
- spec.add_dependency 'faraday', '< 2'
30
+ spec.add_dependency 'faraday', '~> 2'
31
31
  spec.add_dependency 'money', '~> 6.13.1'
32
32
 
33
33
  spec.add_development_dependency 'dotenv'
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omni_exchange
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yun Chung
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-27 00:00:00.000000000 Z
11
+ date: 2024-03-14 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
- - - "<"
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2'
20
20
  type: :runtime
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: '2'
27
27
  - !ruby/object:Gem::Dependency