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