class Miser::Driver::EvoBanco

Public Instance Methods

login(card_number, pin) click to toggle source
# File lib/miser/driver/evo_banco.rb, line 7
def login(card_number, pin)
  @session.visit('https://bancaelectronica.evobanco.com/')

  @session.fill_in('card01', with: card_number)
  @session.find('#pin_number').click
  keyboard = @session.find('.virtual_keyboard')
  pin.split('').each do |number|
    keyboard.find('a', text: number).click
  end
  @session.click_on('Accept')
end
movements(date) click to toggle source
# File lib/miser/driver/evo_banco.rb, line 20
def movements(date)
  @session.click_on('Accounts')
  @session.click_on('Movements')
  @session.click_on('Search for more movements')

  @session.select date.day.to_s.rjust(2,'0'), from: 'ctl00$ctl00$ctl00$CuerpoPlaceHolder$CuerpoOperacionPlaceHolder$ContenidoOperacionPlaceHolder$fechas$fromdays'
  @session.select date.month.to_s.rjust(2,'0'), from: 'ctl00$ctl00$ctl00$CuerpoPlaceHolder$CuerpoOperacionPlaceHolder$ContenidoOperacionPlaceHolder$fechas$frommonth'
  @session.select date.year, from: 'ctl00$ctl00$ctl00$CuerpoPlaceHolder$CuerpoOperacionPlaceHolder$ContenidoOperacionPlaceHolder$fechas$fromyears'
  @session.click_on('Search')

  parse_movements
end
parse_movements() click to toggle source
# File lib/miser/driver/evo_banco.rb, line 34
def parse_movements
  @session.all('table.movements > tbody > tr').map do |row|
    fragment = Nokogiri::HTML::DocumentFragment.parse(row['innerHTML'].strip)
    div = fragment.css('td div')

    date = div.text.match(/Transaction date: (.{19})/)[1]
    purpose = div.css('a')
    amount, _balance = fragment.css('td > span[id] > span[id]')

    Movement.new(
        date: DateTime.strptime(date, '%d/%m/%Y %H:%M:%S'),
        amount: amount.text.to_f,
        purpose: purpose.text
    )
  end
end