multi_currency 0.1.4 → 0.1.5

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: 3f79b0032d845e680d834438cc76a15b572eb773
4
- data.tar.gz: a3047ad8629c81c14e5684462851c3b32d9558b5
3
+ metadata.gz: 8c5500f28f8cf4b925937e44e9978e2462091741
4
+ data.tar.gz: d816d377e396002ac906ef8e9e1557fa71f19bfd
5
5
  SHA512:
6
- metadata.gz: 61fc63dc0d5ed282857372bcbeb5361603754d67b898374876ca80582456966781e7ef985e53d0558a11fef57c69b88b6b83b5254e53059c732ce199c004afd9
7
- data.tar.gz: e538430a532def0b8631a3a929cf6053a8d3b716853fd75e29ab891464cd93a0745278009cce1ae623b4f49f1a197b3bbf636cf0bba74a42ad257482a9f314ec
6
+ metadata.gz: f93be9b8caec6d85e07ed2e530fd7df9b79678c087678d2e94c8ada02263f2b0a9d9f22a3ae1dcafa08eb43c5f490b72eedde09570713ea11e735bef71035b74
7
+ data.tar.gz: f1cadd620b420583652ac3edad243ac0a5c02e73b4ccb319a55831d0246e42e896977e1e291ad6719d68184ad172f599a6df7af56559bd2b07f5eabdfaae06ce
data/README.md CHANGED
@@ -77,6 +77,23 @@ MultiCurrency.configure do |config|
77
77
  end
78
78
  ```
79
79
 
80
+ ## Open Exchange Rates Converter
81
+
82
+ Set default_converter = 'Openexchange' on config/initializers/multi_currency.rb
83
+
84
+ ```ruby
85
+ MultiCurrency.configure do |config|
86
+ config.default_converter = 'Openexchange'
87
+ end
88
+ ```
89
+
90
+ You will need APP ID to use OpenExchangeRate, you can get from https://openexchangerates.org for free.
91
+ Set OPEN_EXCHANGE_RATES_APP_ID environment variable.
92
+
93
+ ```ruby
94
+ OPEN_EXCHANGE_RATES_APP_ID = 'APP_ID'
95
+ ```
96
+
80
97
  ## Contributing
81
98
 
82
99
  1. Fork it ( http://github.com/xsoulsyndicate/multi_currency/fork )
@@ -0,0 +1,30 @@
1
+ module MultiCurrency
2
+ module Converter
3
+ module Openexchange
4
+
5
+ def self.get_rate_and_cache(source_currency, to_currency, date)
6
+ app_id = ENV['OPEN_EXCHANGE_RATES_APP_ID'] || '6ecb58dda5bb46a2b4fc6bcfbffc8c91'
7
+ if source_currency.downcase == to_currency.downcase
8
+ rate = 1.0
9
+ else
10
+ exchange_rate = ExchangeRate.find_by_from_code_and_to_code_and_date(source_currency.downcase, to_currency.downcase, date)
11
+ rate = if exchange_rate.present?
12
+ exchange_rate.rate
13
+ else
14
+ response = Net::HTTP.get_response(URI("https://openexchangerates.org/api/historical/#{(date - 1).strftime("%Y-%m-%d")}.json?app_id=#{app_id}&base=#{source_currency.upcase}"))
15
+ if response.is_a? Net::HTTPOK
16
+ data = JSON.parse(response.body)
17
+ rate_to = data["rates"]["#{to_currency.upcase}"]
18
+ ExchangeRate.create!(from_code: source_currency, to_code: to_currency, date: date, rate: rate_to.to_f)
19
+ rate_to.to_f
20
+ else
21
+ raise "#{response.code}: #{response.body}"
22
+ end
23
+ end
24
+ end
25
+ rate
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -1,6 +1,7 @@
1
1
  require "multi_currency/version"
2
2
  require "multi_currency/configuration"
3
3
  require "converter/grand_trunk"
4
+ require "converter/openexchange"
4
5
  require "multi_currency/converter"
5
6
 
6
7
  module MultiCurrency
@@ -8,7 +8,7 @@ module MultiCurrency
8
8
  end
9
9
 
10
10
  def default_converter=(converter)
11
- if ['GrandTrunk'].include? converter
11
+ if ['GrandTrunk', 'Openexchange'].include? converter
12
12
  @default_converter = converter
13
13
  else
14
14
  raise "Undefined converter"
@@ -1,3 +1,3 @@
1
1
  module MultiCurrency
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multi_currency
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rijaludin Muhsin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-16 00:00:00.000000000 Z
11
+ date: 2015-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -51,6 +51,7 @@ files:
51
51
  - README.md
52
52
  - Rakefile
53
53
  - lib/converter/grand_trunk.rb
54
+ - lib/converter/openexchange.rb
54
55
  - lib/multi_currency.rb
55
56
  - lib/multi_currency/configuration.rb
56
57
  - lib/multi_currency/converter.rb