class StarlingTerminal::Statement
Builds a Starling statement for output to the terminal
Constants
- TRANSACTIONS_TABLE_HEADINGS
The headings to be displayed in our table of transactions
Attributes
access_token[R]
output[R]
Public Class Methods
new(access_token: ENV['STARLING_ACCESS_TOKEN'])
click to toggle source
@param access_token
[String] The Starling Bank API access token @raise [MissingAccessTokenError] if no access token was provided, or it is `nil`
# File lib/starling_terminal/statement.rb, line 14 def initialize(access_token: ENV['STARLING_ACCESS_TOKEN']) raise MissingAccessTokenError unless access_token @access_token = access_token end
Public Instance Methods
generate(output: STDOUT)
click to toggle source
Outputs a complete statement to the provided output @param output [#puts] The output to print the statement to @raise [InvalidAccessTokenError] if the Starling Bank API access token provided is
invalid
@raise [Starling::Errors::ApiError] if something else goes wrong with the Starling
Bank API
@return [#puts] the output
# File lib/starling_terminal/statement.rb, line 26 def generate(output: STDOUT) output.puts balance_line output.puts pending_transactions_line output.puts available_to_spend_line output.puts "#{transactions_table}\n\n" output rescue Starling::Errors::ApiError => error raise InvalidAccessTokenError if [401, 403].include?(error.status) raise end
Private Instance Methods
account_balance()
click to toggle source
# File lib/starling_terminal/statement.rb, line 80 def account_balance @account_balance ||= starling.account_balance.get end
available_to_spend_line()
click to toggle source
# File lib/starling_terminal/statement.rb, line 58 def available_to_spend_line available_to_spend = Utils.float_to_currency( account_balance.available_to_spend, currency: account_balance.currency ) "Available to spend: #{available_to_spend}\n\n" end
balance_line()
click to toggle source
# File lib/starling_terminal/statement.rb, line 41 def balance_line amount = account_balance.amount balance_colour = Utils.colour_for_amount(amount) balance = Utils.float_to_currency(amount, currency: account_balance.currency) "\n\nBalance: #{balance}".colorize(balance_colour) end
pending_transactions_line()
click to toggle source
# File lib/starling_terminal/statement.rb, line 49 def pending_transactions_line pending_transactions = Utils.float_to_currency( account_balance.pending_transactions, currency: account_balance.currency ) "Pending: #{pending_transactions}" end
starling()
click to toggle source
# File lib/starling_terminal/statement.rb, line 76 def starling @starling ||= Starling::Client.new(access_token: access_token) end
transaction_rows()
click to toggle source
# File lib/starling_terminal/statement.rb, line 72 def transaction_rows @transaction_rows = transactions.map { |tx| TransactionRow.present(tx) } end
transactions()
click to toggle source
# File lib/starling_terminal/statement.rb, line 84 def transactions @transactions ||= starling.transactions.list end
transactions_table()
click to toggle source
# File lib/starling_terminal/statement.rb, line 67 def transactions_table Terminal::Table.new(headings: TRANSACTIONS_TABLE_HEADINGS, rows: transaction_rows) end