Module: Gera::CurrencyRateModeBuilderSupport

Included in:
CurrencyRateMode
Defined in:
app/models/concerns/gera/currency_rate_mode_builder_support.rb

Instance Method Summary collapse

Instance Method Details

#build_currency_rateObject



5
6
7
8
9
# File 'app/models/concerns/gera/currency_rate_mode_builder_support.rb', line 5

def build_currency_rate
  @currency_rate ||= build_currency_rate!
rescue CurrencyRateBuilder::Error
  nil
end

#build_currency_rate!Object



15
16
17
18
19
# File 'app/models/concerns/gera/currency_rate_mode_builder_support.rb', line 15

def build_currency_rate!
  raise build_result.error if build_result.error?

  build_result.currency_rate
end

#build_resultObject



11
12
13
# File 'app/models/concerns/gera/currency_rate_mode_builder_support.rb', line 11

def build_result
  @result ||= builder.build_currency_rate
end

#builderObject



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/models/concerns/gera/currency_rate_mode_builder_support.rb', line 21

def builder
  case mode
  when 'auto'
    CurrencyRateAutoBuilder.new currency_pair: currency_pair
  when 'cross'
    CurrencyRateCrossBuilder.new currency_pair: currency_pair, cross_rate_modes: cross_rate_modes
  else
    source = RateSource.find_by_key(mode)
    raise "not supported mode #{mode} for #{currency_pair}" unless source.present?

    CurrencyRateDirectBuilder.new currency_pair: currency_pair, source: source
  end
end