Class: Killbill::CurrencyPlugin::DefaultPlugin

Inherits:
Plugin::Currency
  • Object
show all
Defined in:
lib/currency_plugin/api.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.initialize!Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/currency_plugin/api.rb', line 12

def self.initialize!
  require 'active_record'
  require 'active_record/bogacs'
  require 'arjdbc'

  ::ActiveRecord::ConnectionAdapters::ConnectionHandler.connection_pool_class = ::ActiveRecord::Bogacs::FalsePool
  db_config = {
      :adapter              => :mysql,
      # See KillbillActivator#KILLBILL_OSGI_JDBC_JNDI_NAME
      :data_source          => Java::JavaxNaming::InitialContext.new.lookup('killbill/osgi/jdbc'),
      # Since AR-JDBC 1.4, to disable session configuration
      :configure_connection => false
  }
  ActiveRecord::Base.establish_connection(db_config)
end

Instance Method Details

#after_requestObject

return DB connections to the Pool if required



34
35
36
# File 'lib/currency_plugin/api.rb', line 34

def after_request
  ActiveRecord::Base.connection.close
end

#get_base_currencies(options = {}) ⇒ Object



38
39
40
41
42
# File 'lib/currency_plugin/api.rb', line 38

def get_base_currencies(options = {})
  (Killbill::CurrencyPlugin::CurrencyUpdate.distinct_base_currencies || []).map do |c|
    c.base_currency
  end
end

#get_conversion_dates(base_currency, options = {}) ⇒ Object



49
50
51
52
53
# File 'lib/currency_plugin/api.rb', line 49

def get_conversion_dates(base_currency, options = {})
  (Killbill::CurrencyPlugin::CurrencyUpdate.historical_base_currencies(base_currency) || []).map do |r|
    r.conversion_date.utc
  end
end

#get_current_rates(base_currency, options = {}) ⇒ Object



55
56
57
58
59
60
61
62
# File 'lib/currency_plugin/api.rb', line 55

def get_current_rates(base_currency, options = {})
  base_latest = Killbill::CurrencyPlugin::CurrencyUpdate.latest_base_currency(base_currency)
  if base_latest.nil? || base_latest.size == 0
    return []
  end

  get_rates_for_currency_update(base_latest[0].id, base_currency, base_latest[0].conversion_date)
end

#get_latest_conversion_date(base_currency, options = {}) ⇒ Object



44
45
46
47
# File 'lib/currency_plugin/api.rb', line 44

def get_latest_conversion_date(base_currency, options = {})
  res = Killbill::CurrencyPlugin::CurrencyUpdate.latest_base_currency(base_currency)
  res[0].conversion_date.utc unless res.size == 0
end

#get_rates(base_currency, conversion_date, options = {}) ⇒ Object



64
65
66
67
68
69
70
71
# File 'lib/currency_plugin/api.rb', line 64

def get_rates(base_currency, conversion_date, options = {})
  (Killbill::CurrencyPlugin::CurrencyUpdate.historical_base_currencies(base_currency) || []).each do |e|
    if Time.at(e.conversion_date) <= Time.at(conversion_date)
      return get_rates_for_currency_update(e.id, base_currency, e.conversion_date)
    end
  end
  []
end

#start_pluginObject



28
29
30
31
# File 'lib/currency_plugin/api.rb', line 28

def start_plugin
  super
  DefaultPlugin.initialize!
end