Module: EGPRates
- Defined in:
- lib/egp_rates.rb,
lib/egp_rates/cae.rb,
lib/egp_rates/cbe.rb,
lib/egp_rates/cib.rb,
lib/egp_rates/egb.rb,
lib/egp_rates/nbe.rb,
lib/egp_rates/nbg.rb,
lib/egp_rates/ube.rb,
lib/egp_rates/aaib.rb,
lib/egp_rates/adib.rb,
lib/egp_rates/bank.rb,
lib/egp_rates/blom.rb,
lib/egp_rates/edbe.rb,
lib/egp_rates/midb.rb,
lib/egp_rates/alex_bank.rb,
lib/egp_rates/banque_misr.rb,
lib/egp_rates/faisal_bank.rb,
lib/egp_rates/al_baraka_bank.rb,
lib/egp_rates/banque_du_caire.rb,
lib/egp_rates/suez_canal_bank.rb,
lib/egp_rates/al_ahli_bank_of_kuwait.rb
Overview
Base Module
Defined Under Namespace
Classes: AAIB, ADIB, AlAhliBankOfKuwait, AlBarakaBank, AlexBank, Bank, BanqueDuCaire, BanqueMisr, Blom, CAE, CBE, CIB, EDBE, EGB, FaisalBank, MIDB, NBE, NBG, ResponseError, SuezCanalBank, UBE
Class Method Summary collapse
-
.exchange_rate(sym = :USD, cache_result = true) ⇒ Hash
Return the exchange rate of a single currency from different banks.
-
.exchange_rates ⇒ Hash
Threaded execution to get the exchange rates from different banks.
Class Method Details
.exchange_rate(sym = :USD, cache_result = true) ⇒ Hash
Return the exchange rate of a single currency from different banks
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/egp_rates.rb', line 72 def self.exchange_rate(sym = :USD, cache_result = true) @exchange_rates ||= exchange_rates if cache_result @exchange_rates = exchange_rates unless cache_result @exchange_rates.each_with_object({}) do |rates, result| begin result[rates[0]] = { sell: rates[1][:sell].fetch(sym.upcase, 'N/A'), buy: rates[1][:buy].fetch(sym.upcase, 'N/A') } rescue TypeError result[rates[0]] = rates[1] end end end |
.exchange_rates ⇒ Hash
Threaded execution to get the exchange rates from different banks
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/egp_rates.rb', line 48 def self.exchange_rates semaphore = Mutex.new # Fetch all the constants (Banks) implemented (constants - [:Bank, :ResponseError]).each_with_object({}) do |klass, rates| Thread.new do bank = EGPRates.const_get(klass).new semaphore.synchronize do begin rates[klass] = bank.exchange_rates rescue ResponseError rates[klass] = 'Failed to get exchange rates' end end end.join end end |