class Bankscrap::Openbank::Card

Constants

CARD_ENDPOINT

Attributes

contract_id[RW]

Public Instance Methods

build_transaction(data) click to toggle source

Build a transaction object from API data

# File lib/bankscrap/openbank/card.rb, line 39
def build_transaction(data)
  return if data['estadoPeticion'] == 'L'
  Transaction.new(
    account: self,
    id: data['numeroMovimintoEnDia'],
    amount: money(data['impOperacion']),
    description: data['txtCajero'],
    effective_date: parse_date(data['fechaAnotacionMovimiento']),
    operation_date: parse_date(data['fechaMovimiento']),
    balance: Money.new(0, 'EUR') # TODO: Prepaid/debit cards don't have a Balance - maybe Credit ones do.
  )
end
fetch_transactions(start_date: Date.today - 2.years, end_date: Date.today) click to toggle source
# File lib/bankscrap/openbank/card.rb, line 34
def fetch_transactions(start_date: Date.today - 2.years, end_date: Date.today)
  fetch_transactions_for(bank, start_date: start_date, end_date: end_date)
end
fetch_transactions_for(connection, start_date: Date.today - 1.month, end_date: Date.today) click to toggle source

Fetch transactions for the given account. By default it fetches transactions for the last month,

Returns an array of BankScrap::Transaction objects

# File lib/bankscrap/openbank/card.rb, line 16
def fetch_transactions_for(connection, start_date: Date.today - 1.month, end_date: Date.today)
  transactions = []
  fields = { producto: contract_id,
             numeroContrato: id,
             pan: pan,
             fechaDesde: format_date(start_date),
             fechaHasta: format_date(end_date)
           }
  # Loop over pagination
  until fields.empty?
    data = connection.get(CARD_ENDPOINT, fields: fields)
    transactions += data['lista']['movimientos'].map { |data| build_transaction(data) }.compact
    fields = next_page_fields(data)
  end

  transactions
end