class Dwolla::OAuth

Public Class Methods

catalog(token=true) click to toggle source
# File lib/dwolla/oauth.rb, line 67
def self.catalog(token=true)
  resp = Dwolla.request(:get, '/catalog', {}, {}, token, false, false)

  return "No data received." unless resp.is_a?(Hash)
  raise APIError.new(resp['Message']) unless resp.has_key?('_links')
  return resp['_links']
end
get_auth_url(redirect_uri=nil, scope=Dwolla::scope, verified_account=false) click to toggle source
# File lib/dwolla/oauth.rb, line 3
def self.get_auth_url(redirect_uri=nil, scope=Dwolla::scope, verified_account=false)
  raise AuthenticationError.new('No Api Key Provided.') unless Dwolla::api_key

  params = {
      :scope => scope,
      :response_type => 'code',
      :client_id => Dwolla::api_key, 
      :verified_account => verified_account
  }

  params['redirect_uri'] = redirect_uri unless redirect_uri.nil?

  uri = Addressable::URI.new
  uri.query_values = params

  if Dwolla::debug and Dwolla::sandbox
    puts "[DWOLLA SANDBOX MODE OPERATION]"
  end

  return auth_url + '?' + uri.query
end
get_token(code=nil, redirect_uri=nil) click to toggle source
# File lib/dwolla/oauth.rb, line 25
def self.get_token(code=nil, redirect_uri=nil)
  raise MissingParameterError.new('No Code Provided.') if code.nil?

  params = {
      :grant_type => 'authorization_code',
      :code => code
  }

  # I realize this is ugly, but the unit tests fail
  # if the key is accessed["like_this"] because the
  # hash is compared with "quotes" and not :like_this.

  # It may very well be my Ruby version
  # TODO: Revisit this
  (params = params.merge({:redirect_uri => redirect_uri})) unless redirect_uri.nil?

  resp = Dwolla.request(:post, token_url, params, {}, false, false, true)

  # TODO: Revisit this to make it more unit test friendly, fails ['error_description'] due to
  # key not existing, same on L58
  return "No data received." unless resp.is_a?(Hash)
  raise APIError.new(resp['error_description']) unless resp.has_key?('access_token') and resp.has_key?('refresh_token')

  return resp
end
refresh_auth(refresh_token=nil) click to toggle source
# File lib/dwolla/oauth.rb, line 51
def self.refresh_auth(refresh_token=nil)
  raise MissingParameterError.new('No Refresh Token Provided') if refresh_token.nil?

  params = {
      :grant_type => 'refresh_token',
      :refresh_token => refresh_token
  }

  resp = Dwolla.request(:post, token_url, params, {}, false, false, true)

  return "No data received." unless resp.is_a?(Hash)
  raise APIError.new(resp['error_description']) unless resp.has_key?('access_token') and resp.has_key?('refresh_token')

  return resp
end

Private Class Methods

auth_url() click to toggle source
# File lib/dwolla/oauth.rb, line 77
def self.auth_url
  Dwolla.hostname + '/oauth/v2/authenticate'
end
token_url() click to toggle source
# File lib/dwolla/oauth.rb, line 81
def self.token_url
  Dwolla.hostname + '/oauth/v2/token'
end