class Bankscrap::Ibercaja::Bank

Constants

BASE_ENDPOINT
POST_AUTH_ENDPOINT
PRODUCTS_ENDPOINT
REQUIRED_CREDENTIALS

Public Class Methods

new(credentials = {}) click to toggle source
Calls superclass method
# File lib/bankscrap/ibercaja/bank.rb, line 15
def initialize(credentials = {})
  super do
    @password = @password.to_s
  end
end

Public Instance Methods

balances() click to toggle source
# File lib/bankscrap/ibercaja/bank.rb, line 21
def balances
  log 'get_balances'
  balances = {}
  total_balance = 0
  @accounts.each do |account|
    balances[account.description] = account.balance
    total_balance += account.balance
  end

  balances['TOTAL'] = total_balance
  balances
end
fetch_accounts() click to toggle source
# File lib/bankscrap/ibercaja/bank.rb, line 34
def fetch_accounts
  log 'fetch_accounts'

  JSON.parse(get(PRODUCTS_ENDPOINT))['Productos'].map do |account|
    build_account(account)
  end.compact
end
fetch_transactions_for(account, start_date: Date.today - 1.month, end_date: Date.today) click to toggle source
# File lib/bankscrap/ibercaja/bank.rb, line 42
def fetch_transactions_for(account, start_date: Date.today - 1.month, end_date: Date.today)
  log "fetch_transactions for #{account.id}"

  params = {
    'request.cuenta' => account.id,
    'request.fechaInicio' => start_date.strftime('%Y/%m/%d'),
    'request.fechaFin' => end_date.strftime('%Y/%m/%d'),
  }
  request = get("#{PRODUCTS_ENDPOINT}/movimientos", params: params)
  json = JSON.parse(request)
  json['Movimientos'].map do |transaction|
    build_transaction(transaction, account)
  end
end

Private Instance Methods

build_account(data) click to toggle source

Build an Account object from API data

# File lib/bankscrap/ibercaja/bank.rb, line 79
def build_account(data)
  Account.new(
    bank: self,
    id: data['Numero'],
    name: data['Alias'],
    balance: Money.new(data['Saldo'] || 0, 'EUR'),
    available_balance: Money.new(data['Dispuesto'] || 0, 'EUR'),
    description: data['Alias'],
    iban: data['IBAN'],
  )
end
build_transaction(data, account) click to toggle source

Build a transaction object from API data

# File lib/bankscrap/ibercaja/bank.rb, line 92
def build_transaction(data, account)
  amount = Money.new(data['Importe'] || 0, 'EUR')
  Transaction.new(
    account: account,
    # There is no unique id in the json, so we MD5 the json to create one
    id: Digest::MD5.hexdigest(data.to_json),
    amount: amount,
    effective_date: Date.parse(data['FechaValor']),
    description: data['ConceptoMovimiento'] + ' ' + data['Registros'].join(' '),
    balance: Money.new(data['saldo'] || 0, 'EUR'),
  )
end
login() click to toggle source
# File lib/bankscrap/ibercaja/bank.rb, line 59
def login
  add_headers(
    'Content-Type' => 'application/json; charset=utf-8',
    'AppID' => 'IbercajaAppV2Piloto',
    'version' => '2.4.8',
    'PlayBackMode' => 'Real',
    'Entidad' =>'2085',
    'Dispositivo' => 'IOSP',
    'Idioma' => 'es',
    'Canal' => 'MOV',
  )
  params = {"Usuario" => @dni, "Clave" => @password,"Tarjeta" => false}
  json = JSON.parse(post(POST_AUTH_ENDPOINT, fields: params.to_json))
  add_headers(
    'Ticket' => json['Ticket'],
    'Usuario' => @dni,
  )
end