class Menthol::Provider

Attributes

accounts[R]

Public Class Methods

new(name, username, password, accounts) click to toggle source
# File lib/menthol/provider.rb, line 6
def initialize(name, username, password, accounts)
  @name     = name
  @username = username
  @password = password
  @accounts = accounts.map { |a| Account.open(self.name, a) }
end

Public Instance Methods

amount() click to toggle source
# File lib/menthol/provider.rb, line 19
def amount
  @accounts.map(&:amount).reduce(Money.new(0, "THB"), &:+)
end
name() click to toggle source
# File lib/menthol/provider.rb, line 15
def name
  @name || self.class.name.split("::").last
end
sync!() click to toggle source
# File lib/menthol/provider.rb, line 23
def sync!
  browser.goto(login_url)

  login
  synchronize_accounts
  logout

  browser.quit
  @browser = nil
end

Private Instance Methods

browser() click to toggle source
# File lib/menthol/provider.rb, line 43
def browser
  @browser ||= Watir::Browser.new(:chrome)
end
login() click to toggle source
# File lib/menthol/provider.rb, line 47
def login
  raise NotImplementedError
end
logout() click to toggle source
# File lib/menthol/provider.rb, line 57
def logout
  raise NotImplementedError
end
submit_credentials(username:, password:, button:) click to toggle source
# File lib/menthol/provider.rb, line 36
def submit_credentials(username:, password:, button:)
  browser.text_field(name: username).set(@username)
  browser.text_field(name: password).set(@password)
  button.click
  button.wait_while_present
end
synchronize_accounts() click to toggle source
# File lib/menthol/provider.rb, line 51
def synchronize_accounts
  @accounts.each do |account|
    account.parse_amount(find_amount(account.name))
  end
end