class BankApi::Clients::BaseClient
Public Class Methods
new(config = BankApi::Configuration.new)
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 11 def initialize(config = BankApi::Configuration.new) @days_to_check = config.days_to_check end
Public Instance Methods
batch_transfers(transfers_data)
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 37 def batch_transfers(transfers_data) validate_credentials transfers_data.each do |transfer_data| validate_transfer_missing_data(transfer_data) validate_transfer_valid_data(transfer_data) end execute_batch_transfers(transfers_data) end
get_account_balance(options)
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 20 def get_account_balance(options) validate_credentials get_balance(options) end
get_recent_deposits(options = {})
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 15 def get_recent_deposits(options = {}) validate_credentials parse_deposit_entries(get_deposits(options)) end
get_recent_withdrawals()
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 25 def get_recent_withdrawals validate_credentials parse_withdrawal_entries(get_withdrawals) end
transfer(transfer_data)
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 30 def transfer(transfer_data) validate_credentials validate_transfer_missing_data(transfer_data) validate_transfer_valid_data(transfer_data) execute_transfer(transfer_data) end
Private Instance Methods
bank_name()
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 48 def bank_name raise NotImplementedError end
browser()
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 92 def browser @browser ||= Pincers.for_webdriver(driver, wait_timeout: 35.0) end
driver(width = 1024, heigth = 768)
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 100 def driver(width = 1024, heigth = 768) chrome_path = ENV.fetch('GOOGLE_CHROME_BIN_PATH', nil) return :chrome unless chrome_path chrome_opts = { "chromeOptions" => { "binary" => chrome_path } } opts = { desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome(chrome_opts), args: ['--no-sandbox', '--browsertime.xvfb'] } d = Selenium::WebDriver.for(:chrome, opts) d.manage.window.size = Selenium::WebDriver::Dimension.new(width, heigth) d end
execute_batch_transfers(_transfers_data)
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 80 def execute_batch_transfers(_transfers_data) raise NotImplementedError end
execute_transfer(_transfer_data)
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 76 def execute_transfer(_transfer_data) raise NotImplementedError end
get_balance(_options = {})
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 60 def get_balance(_options = {}) raise NotImplementedError end
get_deposits(_options = {})
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 56 def get_deposits(_options = {}) raise NotImplementedError end
get_withdrawals()
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 64 def get_withdrawals raise NotImplementedError end
goto_frame(query: nil, should_reset: true)
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 133 def goto_frame(query: nil, should_reset: true) browser.goto frame: :top if should_reset frame = wait(query) if query browser.goto(frame: frame) end
parse_deposit_entries(entries)
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 139 def parse_deposit_entries(entries) deposit_entries = entries.map do |entry| BankApi::Values::DepositEntry.new( entry[:amount], entry[:date], entry[:time], entry[:rut], bank_name, entry[:client] ) end BankApi::SignDeposits.sign(deposit_entries) end
parse_withdrawal_entries(entries)
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 153 def parse_withdrawal_entries(entries) entries.map do |entry| BankApi::Values::WithdrawalEntry.new( entry[:amount], entry[:date], entry[:time], entry[:rut], entry[:client], entry[:account_number], entry[:account_bank], entry[:trx_id], bank_name ) end end
selenium_browser()
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 96 def selenium_browser @browser.document end
validate_credentials()
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 52 def validate_credentials raise NotImplementedError end
validate_transfer_missing_data(_transfer_data)
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 68 def validate_transfer_missing_data(_transfer_data) raise NotImplementedError end
validate_transfer_valid_data(_transfer_data)
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 72 def validate_transfer_valid_data(_transfer_data) raise NotImplementedError end
verifier_digit(rut)
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 88 def verifier_digit(rut) rut.split("-")[1] end
wait(query) { |: search.any?| ... }
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 120 def wait(query) count = 0 timeout = browser.config[:wait_timeout] interval = browser.config[:wait_interval] fulfilled = false while !fulfilled && count < timeout fulfilled = block_given? ? yield : browser.search(query).any? sleep interval count += interval end browser.search(query) end
without_verifier_digit_or_separators(rut)
click to toggle source
# File lib/bank_api/clients/base_client.rb, line 84 def without_verifier_digit_or_separators(rut) rut.split("-")[0].delete('.') end