Class: Fixer::Feed

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/fixer/feed.rb

Overview

Wraps ECB’s data feed

Constant Summary collapse

SCOPES =
{
  current: 'daily',
  ninety_days: 'hist-90d',
  historical: 'hist'
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(scope = :current) ⇒ Feed

Returns a new instance of Feed.



17
18
19
# File 'lib/fixer/feed.rb', line 17

def initialize(scope = :current)
  @scope = SCOPES.fetch(scope) { raise ArgumentError }
end

Instance Method Details

#eachObject



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/fixer/feed.rb', line 21

def each
  REXML::XPath.each(document, '/gesmes:Envelope/Cube/Cube[@time]') do |day|
    date = Date.parse(day.attribute('time').value)
    REXML::XPath.each(day, './Cube') do |currency|
      yield(
        date: date,
        iso_code: currency.attribute('currency').value,
        rate: Float(currency.attribute('rate').value)
      )
    end
  end
end