class BOS::Query
Attributes
session[R]
Public Class Methods
new(session)
click to toggle source
# File lib/bos/query.rb, line 3 def initialize(session) @session = session end
Public Instance Methods
account_number()
click to toggle source
# File lib/bos/query.rb, line 18 def account_number @account_number ||= begin txt = session.at("p[class='numbers wider']").text /\d{8}/.match(txt)[0] end end
balance()
click to toggle source
# File lib/bos/query.rb, line 7 def balance @balance ||= session.at("p[class='balance']/span[2]").text end
full_statement()
click to toggle source
# File lib/bos/query.rb, line 61 def full_statement @full_statement ||= begin rows = full_statement_page.search('//table/tbody/tr') result = [] rows.each do |row| date = Date.parse(row.at("th/span/text()")) tds = row.search("td") description = tds[0].text.strip type = tds[1].text.strip income = tds[2].text.to_f outcome = tds[3].text.to_f balance = tds[4].text result << { date: date, description: description, type: type, income: income, outcome: outcome, balance: balance } end result end end
full_statement_page()
click to toggle source
# File lib/bos/query.rb, line 89 def full_statement_page @full_statement_page ||= begin full_statement_page_link = mini_statement_page .at("a[id='miniaccountstatements:lkViewFullStatement']")["href"] BOS.agent.get(full_statement_page_link) end end
mini_statement()
click to toggle source
# File lib/bos/query.rb, line 33 def mini_statement @mini_statement ||= begin rows = mini_statement_page.search('//table/tbody/tr') result = [] rows.each_with_index do |row, index| date_ele = row.at('td[1]/span/text()') date = date_ele ? Date.parse(date_ele.text) : result[index - 1][:date] description = row.at('td[2]/text()').text.strip income = row.at('td[3]/text()') income = income ? income.text.strip.to_f : 0 outcome = row.at('td[4]/text()') outcome = outcome ? outcome.text.strip.to_f : 0 result << { date: date, description: description, income: income, outcome: outcome } end result end end
mini_statement_page()
click to toggle source
# File lib/bos/query.rb, line 25 def mini_statement_page @mini_statement_page ||= begin mini_link = session.at("a[id='lstAccLst:0:lstOptions:lkMiniAccountStmt']") mini_link = / {ajaxURI:'([\S]+)'}/.match(mini_link.attributes["class"].value)[1] BOS.agent.get mini_link end end
sort_code()
click to toggle source
# File lib/bos/query.rb, line 11 def sort_code @sort_code ||= begin txt = session.at("p[class='numbers wider']").text /\d\d-\d\d-\d\d/.match(txt)[0] end end
transaction_query(query, start_date, end_date)
click to toggle source
TODO: Implement query search
# File lib/bos/query.rb, line 99 def transaction_query(query, start_date, end_date) raise NoMethodError, "transaction_query method will come soon" end