module BankApi::Clients::BancoSecurity::Deposits
Public Instance Methods
any_deposits?()
click to toggle source
# File lib/bank_api/clients/banco_security/concerns/deposits.rb, line 109 def any_deposits? browser.search( "#gridPrincipalRecibidas " \ ".k-label:contains('No se han encontrado transacciones para la búsqueda seleccionada.')" ).none? end
deposit_range()
click to toggle source
# File lib/bank_api/clients/banco_security/concerns/deposits.rb, line 92 def deposit_range @deposit_range ||= begin today = timezone.utc_to_local(Time.now).to_date { start: (today - @days_to_check), end: today } end end
deposits_account_details_url()
click to toggle source
# File lib/bank_api/clients/banco_security/concerns/deposits.rb, line 105 def deposits_account_details_url browser.search("a:contains('Descargar TXT')").first.attribute("href") end
deposits_from_account_details()
click to toggle source
# File lib/bank_api/clients/banco_security/concerns/deposits.rb, line 47 def deposits_from_account_details data = browser.download( deposits_account_details_url ).content.encode("UTF-8", "iso-8859-3").split("\r\n") transactions = data[3, data.count - 11].reverse format_account_transactions(transactions) end
deposits_from_txt()
click to toggle source
# File lib/bank_api/clients/banco_security/concerns/deposits.rb, line 36 def deposits_from_txt raise BankApi::Deposit::FetchError, "Couldn't fetch deposits" unless any_deposits? setup_authentication download = browser.download(deposits_txt_url) transactions = download.content.split("\n").drop(1).map { |r| r.split("|") } if transactions.empty? raise BankApi::Deposit::FetchError, "Couldn't fetch deposits, received #{download.content}" end format_transactions(transactions) end
deposits_txt_url()
click to toggle source
# File lib/bank_api/clients/banco_security/concerns/deposits.rb, line 99 def deposits_txt_url selenium_browser.execute_script("console.log(DescargarDocumentoTxtRecibidas)") log = selenium_browser.manage.logs.get(:browser).last /url = '(.*)';/.match(log.message).captures.first end
extract_client_name(text)
click to toggle source
# File lib/bank_api/clients/banco_security/concerns/deposits.rb, line 87 def extract_client_name(text) parts = text.to_s.split(/\ DE | De | de /, 2) parts.last.to_s.strip end
fill_date_inputs()
click to toggle source
# File lib/bank_api/clients/banco_security/concerns/deposits.rb, line 14 def fill_date_inputs start_element = browser.search('#datePickerInicioRecibidas').elements.first start_element.send_key "-" deposit_range[:start].strftime('%d%m%Y').chars.each do |c| start_element.send_key c sleep 0.1 end end_element = browser.search('#datePickerFinRecibido').elements.first end_element.send_key "-" deposit_range[:end].strftime('%d%m%Y').chars.each do |c| end_element.send_key c sleep 0.1 end end
format_account_transactions(transactions)
click to toggle source
# File lib/bank_api/clients/banco_security/concerns/deposits.rb, line 68 def format_account_transactions(transactions) transactions.inject([]) do |memo, t| parts = t.split(";") amount = parts[4].delete(",").to_i next memo if amount.zero? client = extract_client_name(parts[1]) memo << { client: client, rut: nil, date: Date.strptime(parts[0], "%d/%m"), time: nil, amount: amount } memo end end
format_transactions(transactions)
click to toggle source
# File lib/bank_api/clients/banco_security/concerns/deposits.rb, line 55 def format_transactions(transactions) transactions.map do |t| datetime = timezone.local_to_utc(DateTime.parse(t[0])) { client: t[1], rut: Utils::BancoSecurity.format_rut(t[2]), date: datetime.to_date, time: datetime, amount: t[5].to_i } end end
select_deposits_range()
click to toggle source
# File lib/bank_api/clients/banco_security/concerns/deposits.rb, line 6 def select_deposits_range browser.search('.BusquedaPorDefectoRecibida a:contains("búsqueda avanzada")').click browser.search('#RadioEntreFechasRecibido').click fill_date_inputs wait('.ContenedorSubmitRecibidas .btn_buscar').click wait_for_deposits_fetch end
timezone()
click to toggle source
# File lib/bank_api/clients/banco_security/concerns/deposits.rb, line 116 def timezone @timezone ||= Timezone['America/Santiago'] end
wait_for_deposits_fetch()
click to toggle source
# File lib/bank_api/clients/banco_security/concerns/deposits.rb, line 29 def wait_for_deposits_fetch goto_frame query: '#mainFrame' goto_frame query: 'iframe[name="central"]', should_reset: false wait('.k-loading-image') { browser.search('.k-loading-image').any? } wait('.k-loading-image') { browser.search('.k-loading-image').none? } end