module Pin::API::Tokens

Public Instance Methods

create_token(number, expiry_month, expiry_year, cvc, name, address) click to toggle source
# File lib/pin/api/tokens.rb, line 2
def create_token(number, expiry_month, expiry_year, cvc, name, address)
  require_field number, :number
  require_field expiry_month, :expiry_month
  require_field expiry_year, :expiry_year
  require_field cvc, :cvc
  require_field name, :name

  unless address.is_a? Hash
    throw 'Address must be a hash containing each address field: line1, line2 (optional), city, postcode, state, country'
  end

  require_field address[:line1], :line1
  require_field address[:city], :city
  require_field address[:postcode], :postcode
  require_field address[:state], :state
  require_field address[:country], :country

  params = {
      :number => number,
      :expiry_month => expiry_month,
      :expiry_year => expiry_year,
      :cvc => cvc,
      :name => name,
      :address_line1 => address[:line1],
      :address_city => address[:city],
      :address_postcode => address[:postcode],
      :address_state => address[:state],
      :address_country => address[:country],
  }

  if address.has_key? :line2 && !address[:line2].blank?
    params[:address_line2] = address[:line2]
  end

  raw_response = api_call(:post, 'cards', params)
  pin_response(raw_response, Pin::Models::Card.new(raw_response['response']))
end