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



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

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

Returns the value of attribute address_type.



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

def address_type
  @address_type
end

#cityObject

Returns the value of attribute city.



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

def city
  @city
end

#countryObject

Returns the value of attribute country.



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

def country
  @country
end

#nameObject

Returns the value of attribute name.



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

def name
  @name
end

#postal_codeObject

Returns the value of attribute postal_code.



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

def postal_code
  @postal_code
end

#regionObject

Returns the value of attribute region.



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

def region
  @region
end

#stateObject

Returns the value of attribute state.



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

def state
  @state
end

#streetObject

Returns the value of attribute street.



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

def street
  @street
end

#street2Object

Returns the value of attribute street2.



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

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



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

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