class InvisibleCollector::Resources::DebtResource

Public Class Methods

new(options = {}) click to toggle source
# File lib/invisible_collector/resources/debt_resource.rb, line 8
def initialize(options = {})
  super(options)
  handle(400) { |response| raise InvisibleCollector::InvalidRequest.from_json(response.body) }
  handle(404) { |response| raise InvisibleCollector::NotFound.from_json(response.body) }
  handle(409) { |response| raise InvisibleCollector::InvalidRequest.from_json(response.body) }
  handle(422) { |response| raise InvisibleCollector::InvalidRequest.from_json(response.body) }
end

Public Instance Methods

cancel(debt = {}) click to toggle source
# File lib/invisible_collector/resources/debt_resource.rb, line 16
def cancel(debt = {})
  id = get_id(debt)
  response = execute do |connection|
    connection.put("debts/#{id}/cancel")
  end
  build_response(response)
end
find(params = {}) click to toggle source
# File lib/invisible_collector/resources/debt_resource.rb, line 24
def find(params = {})
  response = execute_get('debts/find', params)
  debts = JSON.parse(response.body).map { |json| Model::Debt.new(json.deep_transform_keys(&:underscore)) }
  Response.new(response, debts)
end
get(id, attrs = {}) click to toggle source
# File lib/invisible_collector/resources/debt_resource.rb, line 30
def get(id, attrs = {})
  response = @connection.get("debts/#{id}", attrs)
  if response.status == 404
    nil
  else
    build_response(response)
  end
end
save(debt) click to toggle source
# File lib/invisible_collector/resources/debt_resource.rb, line 39
def save(debt)
  response = execute_post('debts', debt)
  build_response(response)
end
save_credit(debt, credit) click to toggle source
# File lib/invisible_collector/resources/debt_resource.rb, line 51
def save_credit(debt, credit)
  id = debt.is_a?(Model::Debt) ? debt.id : debt
  response = execute_post("debts/#{id}/credits", credit)
  credit = Model::Credit.new(JSON.parse(response.body).deep_transform_keys(&:underscore))
  Response.new(response, credit)
end
save_debit(debt, debit) click to toggle source
# File lib/invisible_collector/resources/debt_resource.rb, line 44
def save_debit(debt, debit)
  id = debt.is_a?(Model::Debt) ? debt.id : debt
  response = execute_post("debts/#{id}/debits", debit)
  debit = Model::Debit.new(JSON.parse(response.body).deep_transform_keys(&:underscore))
  Response.new(response, debit)
end
suspend(debt = {}) click to toggle source
# File lib/invisible_collector/resources/debt_resource.rb, line 58
def suspend(debt = {})
  id = get_id(debt)
  response = execute do |connection|
    connection.put("debts/#{id}/suspend")
  end
  build_response(response)
end
unsuspend(debt = {}) click to toggle source
# File lib/invisible_collector/resources/debt_resource.rb, line 66
def unsuspend(debt = {})
  id = get_id(debt)
  response = execute do |connection|
    connection.put("debts/#{id}/unsuspend")
  end
  build_response(response)
end

Private Instance Methods

build_response(response) click to toggle source
# File lib/invisible_collector/resources/debt_resource.rb, line 76
def build_response(response)
  debt = Model::Debt.new(JSON.parse(response.body).deep_transform_keys(&:underscore))
  Response.new(response, debt)
end
get_id(debt) click to toggle source
# File lib/invisible_collector/resources/debt_resource.rb, line 81
def get_id(debt)
  if debt.is_a?(InvisibleCollector::Model::Debt)
    debt.id
  elsif debt.is_a?(Hash)
    debt[:id]
  else
    debt
  end
end