class M1API

open browser open network logs save entire thing as har parse should match the logs against when the actions were performed

Constants

VERSION

Attributes

accounts[RW]
accounts_detail[RW]
api_config_file[RW]
api_configs[RW]
token[RW]

Public Class Methods

new(username, password, api_config_file = " click to toggle source
# File lib/m1_api.rb, line 20
def initialize(username, password, api_config_file = "#{__dir__}/m1_api/api_configs.yml")
  @accounts = {}
  @accounts_detail = {}
  load_config_file(api_config_file)
  credentials = { username: username, password: password }
  res = YamlHelpers.call_api_from_config(@api_configs, :authenticate, credentials)
  raise "failed to authenticate:\n\t#{res}" unless res[:code] == 200 && res[:body]['data']['authenticate']['result']['didSucceed']
  @token = res[:body]['data']['authenticate']['accessToken'] 
end
read_credentials(credentials_file=nil) click to toggle source
# File lib/m1_api.rb, line 36
def self.read_credentials(credentials_file=nil)
  if credentials_file
    credentials = YamlHelpers.load_yaml(credentials_file)
    { username: credentials[:M1_USERNAME], password: credentials[:M1_PASSWORD] }
  else
    {username: ENV['M1_USERNAME'], password: ENV['M1_PASSWORD']}
  end
end

Public Instance Methods

deposit(account_id, bank_id, transaction, cancel = false) click to toggle source
# File lib/m1_api.rb, line 66
def deposit(account_id, bank_id, transaction, cancel = false)
  if cancel
    data = { token: @token, account_id: account_id, bank_id: bank_id, transfer_id: transaction }
    YamlHelpers.call_api_from_config(@api_configs, :cancel_deposit, data)
  else
    data = { token: @token, account_id: account_id, bank_id: bank_id, amount: transaction }
    YamlHelpers.call_api_from_config(@api_configs, :deposit, data)
  end
end
load_config_file(api_config_file) click to toggle source
# File lib/m1_api.rb, line 30
def load_config_file(api_config_file)
  # change it to reject both if either fails
  @api_config_file = api_config_file
  @api_configs = YamlHelpers.load_yaml(@api_config_file)
end
output(string) click to toggle source
# File lib/m1_api.rb, line 16
def output(string)
  puts string
end
query_account_detail(account_id) click to toggle source
# File lib/m1_api.rb, line 55
def query_account_detail(account_id)
  data = { token: @token, account_id: account_id }
  detail = YamlHelpers.call_api_from_config(@api_configs, :query_account_detail, data)[:body]['data']['node']
  @accounts_detail[account_id] = {
    status: detail['status'],
    bank: detail['lastAchRelationship'],
    transfers: detail['_achTransfers']['edges']
  }
  @accounts_detail
end
query_accounts() click to toggle source
# File lib/m1_api.rb, line 45
def query_accounts
  accounts = {}
  data = { token: @token }
  id_res = YamlHelpers.call_api_from_config(@api_configs, :list_account_ids, data)
  ids = id_res[:body]['data']['viewer']['accounts']['edges'].each do |account|
    accounts[account['node']['nickname']] = account['node']['id']
  end
  @accounts = accounts
end
withdraw(account_id, bank_id, transaction, cancel = false) click to toggle source
# File lib/m1_api.rb, line 76
def withdraw(account_id, bank_id, transaction, cancel = false)
  if cancel
    data = { token: @token, account_id: account_id, bank_id: bank_id, transfer_id: transaction }
    YamlHelpers.call_api_from_config(@api_configs, :cancel_withdraw, data)
  else
    data = { token: @token, account_id: account_id, bank_id: bank_id, amount: transaction }
    YamlHelpers.call_api_from_config(@api_configs, :withdraw, data)
  end
end