require "ipaddress" module CookieJar module Wallet class Banker < WalletBase def initialize(client_id, client_secret, username, password, passcode) self.client = OAuth2::Client.new(client_id, client_secret, :site => CookieJar::Wallet::AA_HOST) self.token = init_token(username, password, passcode) self.user_id = get_user_id end def init_token(username, password, passcode) self.client.password.get_token(username, password, :passcode => passcode) end def all_circulations(user_url, user_ip, user_agent) raise CookieJar::Error::InvalidUserIP unless IPAddress.valid? user_ip self.url = "#{CookieJar::Wallet::WALLET_HOST}/v1/circulations" response = self.get({:user_url => user_url, :user_ip => user_ip, :user_agent => user_agent, :user_id => self.user_id}) if response.is_a?(Hash) raise CookieJar::Error::InsufficientParams if response["message"] == "Insufficient parameters." raise CookieJar::Error::AccessDenied if response["message"] == "You're not authorized to access the resource" or response[:code] == 401 end response end def get_circulation(circulation_id, user_url, user_ip, user_agent) raise CookieJar::Error::InvalidUserIP unless IPAddress.valid? user_ip self.url = "#{CookieJar::Wallet::WALLET_HOST}/v1//circulations/#{circulation_id}" response = self.get({:user_url => user_url, :user_ip => user_ip, :user_agent => user_agent, :user_id => self.user_id}) unless response["message"].nil? and response[:code].nil? raise CookieJar::Error::AccessDenied if response["message"] == "You're not authorized to access the resource" or response[:code] == 401 raise CookieJar::Error::CirculationNotFound if response["message"][0..21] == "Couldn't find Transfer" raise CookieJar::Error::InsufficientParams if response["message"] == "Insufficient parameters." end response end def create_circulation(amount, user_url, user_ip, user_agent) raise CookieJar::Error::InvalidUserIP unless IPAddress.valid? user_ip self.url = "#{CookieJar::Wallet::WALLET_HOST}/v1/circulations" response = self.post({:amount => amount, :user_url => user_url, :user_ip => user_ip, :user_agent => user_agent, :user_id => self.user_id}) unless response["message"].nil? and response[:code].nil? raise CookieJar::Error::AccessDenied if response["message"] == "You're not authorized to access the resource" or response[:code] == 401 raise CookieJar::Error::CreateError if response["message"] == "Creation of circulation failed." raise CookieJar::Error::InsufficientParams if response["message"] == "Insufficient parameters." end response end def activate_circulation(circulation_id, user_url, user_ip, user_agent) raise CookieJar::Error::InvalidUserIP unless IPAddress.valid? user_ip self.url = "#{CookieJar::Wallet::WALLET_HOST}/v1/circulations/#{circulation_id}/activate" response = self.put(:user_url => user_url, :user_ip => user_ip, :user_agent => user_agent, :user_id => self.user_id) unless response["message"].nil? and response[:code].nil? raise CookieJar::Error::AccessDenied if response["message"] == "You're not authorized to access the resource" or response[:code] == 401 raise CookieJar::Error::InsufficientParams if response["message"] == "Insufficient parameters." raise CookieJar::Error::CirculationNotFound if response["message"][0..21] == "Couldn't find Transfer" raise CookieJar::Error::CirculationAlreadyActivated if response["message"] == "Circulation is already activated." end response end end end end