Class: PayTrace::Address

Inherits:
Object
  • Object
show all
Defined in:
lib/paytrace/address.rb

Overview

Abstracts an address – two types are possible, shipping and billing. Note: the “region” parameter can only be defined for shipping addresses, and the default address type (if unspecified) is billing.

Constant Summary collapse

ATTRIBUTE_MAP =
[
  [:name, :name],
  [:address, :street],
  [:address2, :street2],
  [:city, :city],
  [:region, :region],
  [:state, :state],
  [:postal_code, :postal_code],
  [:country, :country]
]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Address

Initialize a new address instance. Parameters are symbolic keys in a hash. They are:

  • :name – the name on this address

  • :street – the street address

  • :street2 – an optional second line of street address (apartment, suite, etc.)

  • :city – the city

  • :state – the state

  • :country – the country

  • :postal_code – the postal/zip code

  • :address_type – either :billing or :shipping

  • :region – the region (often county); note, only used for shipping addresses, ignored for billing addresses



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/paytrace/address.rb', line 31

def initialize(options={})
  @name = options[:name]
  @street = options[:street]
  @street2 = options[:street2]
  @city = options[:city]
  @state = options[:state]
  @country = options[:country]
  @postal_code = options[:postal_code ]
  @address_type = options[:address_type] || :billing
  @region = options[:region] if @address_type == :shipping # special case for shipping addresses
end

Instance Attribute Details

#address_typeObject

:nodoc:



7
8
9
# File 'lib/paytrace/address.rb', line 7

def address_type
  @address_type
end

#cityObject

:nodoc:



7
8
9
# File 'lib/paytrace/address.rb', line 7

def city
  @city
end

#countryObject

:nodoc:



7
8
9
# File 'lib/paytrace/address.rb', line 7

def country
  @country
end

#nameObject

:nodoc:



7
8
9
# File 'lib/paytrace/address.rb', line 7

def name
  @name
end

#postal_codeObject

:nodoc:



7
8
9
# File 'lib/paytrace/address.rb', line 7

def postal_code
  @postal_code
end

#regionObject

:nodoc:



7
8
9
# File 'lib/paytrace/address.rb', line 7

def region
  @region
end

#stateObject

:nodoc:



7
8
9
# File 'lib/paytrace/address.rb', line 7

def state
  @state
end

#streetObject

:nodoc:



7
8
9
# File 'lib/paytrace/address.rb', line 7

def street
  @street
end

#street2Object

:nodoc:



7
8
9
# File 'lib/paytrace/address.rb', line 7

def street2
  @street2
end

Instance Method Details

#set_request(request) ⇒ Object

Applies the address parameters to a request object for proper formatting to the API Parameters:

  • request – the request object to apply this address to



46
47
48
49
50
51
52
53
# File 'lib/paytrace/address.rb', line 46

def set_request(request)
  ATTRIBUTE_MAP.each do |request_name, attribute_name|   
    unless request_name == :region && address_type == :billing # special case
      # this is ugly, but it saves us from subclassing just to change field names in a predictable way...
      request.set_param("#{address_type.to_s}_#{request_name}".to_sym, self.send(attribute_name))
    end
  end
end