class Monzo::Pot

Public: Retrieve information about a pot. A Pot is a place to keep some money separate from your main spending account.

Attributes

balance[R]
created[R]
currency[R]
deleted[R]
id[R]
name[R]
style[R]
updated[R]

Public Class Methods

all() click to toggle source

Public: Find all Monzo Pots

Returns An Array of Monzo::Pot

# File lib/monzo/pot.rb, line 29
def self.all
  response = Monzo.client.get("/pots")
  parsed_response = JSON.parse(response.body, :symbolize_names => true)

  parsed_response[:pots].map do |item|
    Monzo::Pot.new(item)
  end
end
find(pot_id) click to toggle source

Public: Find a pot with the given pot id.

pot_id - The id to find.

Returns an instance of Monzo::Pot.

# File lib/monzo/pot.rb, line 43
def self.find(pot_id)
  response = Monzo.client.get("/pots/#{pot_id}")
  parsed_response = JSON.parse(response.body, :symbolize_names => true)
  Monzo::Pot.new(parsed_response)
end
new(params) click to toggle source

Public: Initialize an Pot.

params - A Hash of pot parameters.

# File lib/monzo/pot.rb, line 15
def initialize(params)
  @id = params[:id]
  @name = params[:name]
  @style = params[:style]
  @balance = params[:balance]
  @currency = params[:currency]
  @created = params[:created]
  @updated = params[:updated]
  @deleted = params[:deleted]
end

Public Instance Methods

deposit!(amount, source_account_id, dedupe_id = SecureRandom.uuid) click to toggle source

Public: Deposit Money in a pot

amount - The amount to deposit, in pennies. source_account_id - The account_id of the account to withdraw from. dedupe_id (optional) - A random string, to prevent duplicate deposits.

Returns self: a single Monzo::Pot

# File lib/monzo/pot.rb, line 56
def deposit!(amount, source_account_id, dedupe_id = SecureRandom.uuid)
  data = {
    amount: amount,
    source_account_id: source_account_id,
    dedupe_id: dedupe_id,
  }

  response = Monzo.client.put("/pots/#{@id}/deposit", data)
  parsed_response = parse_response(response)
  update_self(parsed_response)
end
withdraw!(amount, destination_account_id, dedupe_id = SecureRandom.uuid) click to toggle source

Public: Withdraw Money from a pot

amount - The amount to withdraw, in pennies. destination_account_id - The account_id of the account to deposit into. dedupe_id (optional) - A random string, to prevent duplicate deposits.

Returns self: a single Monzo::Pot

# File lib/monzo/pot.rb, line 75
def withdraw!(amount, destination_account_id, dedupe_id = SecureRandom.uuid)
  data = {
    amount: amount,
    destination_account_id: destination_account_id,
    dedupe_id: dedupe_id,
  }

  response = Monzo.client.put("/pots/#{@id}/withdraw", data)
  parsed_response = parse_response(response)
  update_self(parsed_response)
end

Private Instance Methods

parse_response(response) click to toggle source

Private: Parse the API response

response - A Net::HTTPResponse provided by Monzo::Client

Returns a hash representing the response or raises a Monzo::APIError

# File lib/monzo/pot.rb, line 94
def parse_response(response)
  parsed_response = JSON.parse(response.body, :symbolize_names => true)
  if response.code.to_i.between?(400,599)
    raise Monzo::APIError, "#{parsed_response[:code]}: #{parsed_response[:error]}"
  end
  parsed_response
end
update_self(parsed_response) click to toggle source

Private: Update the Pot instance variables

parsed_response - a hash whose keys exactly match the instance variables for Monzo::Pot.

Returns self (an instance of Monzo::Pot)

# File lib/monzo/pot.rb, line 107
def update_self(parsed_response)
  instance_variables.each do |iv|
    instance_variable_set(iv, parsed_response[iv.to_s[1..-1].to_sym])
  end
  self
end