Class: ParcelApi::Address

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

Overview

This module provides API requests to Search Domestic(NZ) Addresses, Get Specific Domestic Address Detail, Search International Addresses and Get Specifc International Address Detail.

Constant Summary collapse

AUSTRALIAN_URL =
'/ParcelAddress/2.0/australia/addresses'
DOMESTIC_URL =
'/ParcelAddress/2.0/domestic/addresses'
INTERNATIONAL_URL =
'/ParcelAddress/2.0/international/addresses'

Instance Method Summary collapse

Constructor Details

#initialize(connection = nil) ⇒ Address

Creates a new ParcelApi::Address instance.



13
14
15
# File 'lib/parcel_api/address.rb', line 13

def initialize(connection=nil)
  @connection ||= connection || ParcelApi::Client.connection
end

Instance Method Details

#australian_details(address_id)

Return australian address details for a specific international address id

Parameters:

  • address_id (String)

Returns:

  • australian address detail



55
56
57
58
59
# File 'lib/parcel_api/address.rb', line 55

def australian_details(address_id)
  details_url = File.join(AUSTRALIAN_URL, address_id.to_s)
  response = @connection.get details_url
  RecursiveOpenStruct.new(response.parsed['address'], recurse_over_arrays: true)
end

#australian_search(query, count = 5) ⇒ Array

Search for an Australian Address

Parameters:

  • characters (String)

    to search for

  • number (Integer)

    of search results to return (max 10)

Returns:

  • (Array)

    array of australian addresses



47
48
49
# File 'lib/parcel_api/address.rb', line 47

def australian_search(query, count=5)
  international_search(query, count, 'AU')
end

#details(address_id)

Return domestic address details for a domestic address id

Parameters:

  • address_id (String)

Returns:

  • address detail object



36
37
38
39
40
# File 'lib/parcel_api/address.rb', line 36

def details(address_id)
  details_url = File.join(DOMESTIC_URL, address_id.to_s)
  response = @connection.get details_url
  OpenStruct.new(response.parsed['address'])
end

#international_details(address_id)

Return international address details for a specific international address id

Parameters:

  • address_id (String)

Returns:

  • international address detail



78
79
80
81
82
# File 'lib/parcel_api/address.rb', line 78

def international_details(address_id)
  details_url = File.join(INTERNATIONAL_URL, address_id.to_s)
  response = @connection.get details_url
  RecursiveOpenStruct.new(response.parsed['result'], recurse_over_arrays: true)
end

#international_search(query, count = 5, country_code = nil) ⇒ Array

Search for an International Address

Parameters:

Returns:

  • (Array)

    array of international addresses



67
68
69
70
71
72
# File 'lib/parcel_api/address.rb', line 67

def international_search(query, count=5, country_code=nil)
  return [] if query.length < 4

  response = @connection.get INTERNATIONAL_URL, params: { q: query.to_ascii, count: count, country_code: country_code }
  response.parsed['addresses'].map {|address| OpenStruct.new(address)}
end

#search(query, count = 10) ⇒ Array

Search for a Domestic (NZ) Address

Parameters:

  • characters (String)

    to search for

  • number (Integer)

    of search results to return (max 10)

Returns:

  • (Array)

    array of addresses



22
23
24
25
26
27
28
29
30
# File 'lib/parcel_api/address.rb', line 22

def search(query, count=10)
  return [] if query.length < 4
  response = @connection.get DOMESTIC_URL, params: { q: query.to_ascii, count: count }
  addresses = response.parsed['addresses'].each do |a|
    a['address_id'] = Integer(a['address_id'])
    a['dpid'] = Integer(a['dpid']) if a['dpid']
  end
  addresses.map {|address| OpenStruct.new(address)}
end