smartystreets_ruby_sdk 3.1.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/Makefile +1 -1
  2. data/examples/international_example.rb +3 -3
  3. data/examples/us_autocomplete_example.rb +3 -3
  4. data/examples/us_extract_example.rb +3 -3
  5. data/examples/us_street_multiple_address_example.rb +6 -5
  6. data/examples/us_street_single_address_example.rb +5 -5
  7. data/examples/us_zipcode_multiple_lookup_example.rb +6 -5
  8. data/examples/us_zipcode_single_lookup_example.rb +4 -4
  9. data/lib/smartystreets_ruby_sdk.rb +26 -4
  10. data/lib/smartystreets_ruby_sdk/batch.rb +44 -41
  11. data/lib/smartystreets_ruby_sdk/client_builder.rb +115 -113
  12. data/lib/smartystreets_ruby_sdk/custom_header_sender.rb +10 -8
  13. data/lib/smartystreets_ruby_sdk/errors.rb +13 -11
  14. data/lib/smartystreets_ruby_sdk/exceptions.rb +27 -23
  15. data/lib/smartystreets_ruby_sdk/international_street.rb +3 -1
  16. data/lib/smartystreets_ruby_sdk/international_street/analysis.rb +11 -9
  17. data/lib/smartystreets_ruby_sdk/international_street/candidate.rb +28 -26
  18. data/lib/smartystreets_ruby_sdk/international_street/client.rb +45 -43
  19. data/lib/smartystreets_ruby_sdk/international_street/components.rb +53 -51
  20. data/lib/smartystreets_ruby_sdk/international_street/language_mode.rb +7 -3
  21. data/lib/smartystreets_ruby_sdk/international_street/lookup.rb +63 -61
  22. data/lib/smartystreets_ruby_sdk/international_street/metadata.rb +12 -10
  23. data/lib/smartystreets_ruby_sdk/json_able.rb +13 -11
  24. data/lib/smartystreets_ruby_sdk/logger.rb +2 -2
  25. data/lib/smartystreets_ruby_sdk/native_sender.rb +58 -56
  26. data/lib/smartystreets_ruby_sdk/native_serializer.rb +9 -7
  27. data/lib/smartystreets_ruby_sdk/proxy.rb +2 -2
  28. data/lib/smartystreets_ruby_sdk/request.rb +11 -9
  29. data/lib/smartystreets_ruby_sdk/response.rb +9 -7
  30. data/lib/smartystreets_ruby_sdk/retry_sender.rb +26 -24
  31. data/lib/smartystreets_ruby_sdk/shared_credentials.rb +11 -9
  32. data/lib/smartystreets_ruby_sdk/signing_sender.rb +11 -9
  33. data/lib/smartystreets_ruby_sdk/sleeper.rb +1 -1
  34. data/lib/smartystreets_ruby_sdk/static_credentials.rb +11 -9
  35. data/lib/smartystreets_ruby_sdk/status_code_sender.rb +31 -29
  36. data/lib/smartystreets_ruby_sdk/url_prefix_sender.rb +11 -9
  37. data/lib/smartystreets_ruby_sdk/us_autocomplete.rb +3 -1
  38. data/lib/smartystreets_ruby_sdk/us_autocomplete/client.rb +47 -45
  39. data/lib/smartystreets_ruby_sdk/us_autocomplete/geolocation_type.rb +9 -5
  40. data/lib/smartystreets_ruby_sdk/us_autocomplete/lookup.rb +26 -24
  41. data/lib/smartystreets_ruby_sdk/us_autocomplete/suggestion.rb +11 -9
  42. data/lib/smartystreets_ruby_sdk/us_extract.rb +4 -2
  43. data/lib/smartystreets_ruby_sdk/us_extract/address.rb +18 -16
  44. data/lib/smartystreets_ruby_sdk/us_extract/client.rb +34 -32
  45. data/lib/smartystreets_ruby_sdk/us_extract/lookup.rb +16 -14
  46. data/lib/smartystreets_ruby_sdk/us_extract/metadata.rb +13 -11
  47. data/lib/smartystreets_ruby_sdk/us_extract/result.rb +13 -11
  48. data/lib/smartystreets_ruby_sdk/us_street.rb +4 -2
  49. data/lib/smartystreets_ruby_sdk/us_street/analysis.rb +19 -17
  50. data/lib/smartystreets_ruby_sdk/us_street/candidate.rb +19 -17
  51. data/lib/smartystreets_ruby_sdk/us_street/client.rb +51 -49
  52. data/lib/smartystreets_ruby_sdk/us_street/components.rb +32 -30
  53. data/lib/smartystreets_ruby_sdk/us_street/lookup.rb +27 -26
  54. data/lib/smartystreets_ruby_sdk/us_street/match_type.rb +9 -5
  55. data/lib/smartystreets_ruby_sdk/us_street/metadata.rb +26 -24
  56. data/lib/smartystreets_ruby_sdk/us_zipcode.rb +4 -2
  57. data/lib/smartystreets_ruby_sdk/us_zipcode/alternate_county.rb +12 -10
  58. data/lib/smartystreets_ruby_sdk/us_zipcode/city.rb +13 -11
  59. data/lib/smartystreets_ruby_sdk/us_zipcode/client.rb +46 -44
  60. data/lib/smartystreets_ruby_sdk/us_zipcode/lookup.rb +16 -13
  61. data/lib/smartystreets_ruby_sdk/us_zipcode/result.rb +33 -31
  62. data/lib/smartystreets_ruby_sdk/us_zipcode/zip_code.rb +24 -21
  63. data/lib/smartystreets_ruby_sdk/version.rb +2 -2
  64. data/smartystreets_ruby_sdk.gemspec +1 -1
  65. metadata +2 -2
@@ -2,45 +2,47 @@ require_relative '../request'
2
2
  require_relative '../exceptions'
3
3
  require_relative 'result'
4
4
 
5
- module USExtract
6
- # It is recommended to instantiate this class using ClientBuilder.build_us_extract_api_client()
7
- class Client
8
- def initialize(sender, serializer)
9
- @sender = sender
10
- @serializer = serializer
11
- end
12
-
13
- # Sends a Lookup object to the US Extract Code API and stores the result in the Lookup's result field.
14
- # It also returns the result directly.
15
- def send(lookup)
16
- if lookup.nil? or lookup.text.nil? or not lookup.text.is_a? String or lookup.text.empty?
17
- raise SmartyException, 'Client.send() requires a Lookup with the "text" field set'
5
+ module SmartyStreets
6
+ module USExtract
7
+ # It is recommended to instantiate this class using ClientBuilder.build_us_extract_api_client()
8
+ class Client
9
+ def initialize(sender, serializer)
10
+ @sender = sender
11
+ @serializer = serializer
18
12
  end
19
13
 
20
- request = build_request(lookup)
21
- response = @sender.send(request)
22
- result = Result.new(@serializer.deserialize(response.payload))
14
+ # Sends a Lookup object to the US Extract Code API and stores the result in the Lookup's result field.
15
+ # It also returns the result directly.
16
+ def send(lookup)
17
+ if lookup.nil? or lookup.text.nil? or not lookup.text.is_a? String or lookup.text.empty?
18
+ raise SmartyError, 'Client.send() requires a Lookup with the "text" field set'
19
+ end
23
20
 
24
- lookup.result = result
25
- end
21
+ request = build_request(lookup)
22
+ response = @sender.send(request)
23
+ result = USExtract::Result.new(@serializer.deserialize(response.payload))
26
24
 
27
- def build_request(lookup)
28
- request = Request.new
29
- request.content_type = 'text/plain'
30
- request.payload = lookup.text
25
+ lookup.result = result
26
+ end
31
27
 
32
- add_parameter(request, 'html', lookup.html.to_s)
33
- add_parameter(request, 'aggressive', lookup.aggressive.to_s)
34
- add_parameter(request, 'addr_line_breaks', lookup.addresses_have_line_breaks.to_s)
35
- add_parameter(request, 'addr_per_line', lookup.addresses_per_line.to_s)
28
+ def build_request(lookup)
29
+ request = Request.new
30
+ request.content_type = 'text/plain'
31
+ request.payload = lookup.text
36
32
 
37
- request
38
- end
33
+ add_parameter(request, 'html', lookup.html.to_s)
34
+ add_parameter(request, 'aggressive', lookup.aggressive.to_s)
35
+ add_parameter(request, 'addr_line_breaks', lookup.addresses_have_line_breaks.to_s)
36
+ add_parameter(request, 'addr_per_line', lookup.addresses_per_line.to_s)
37
+
38
+ request
39
+ end
39
40
 
40
- def add_parameter(request, key, value)
41
- if value and not value.empty?
42
- request.parameters[key] = value
41
+ def add_parameter(request, key, value)
42
+ if value and not value.empty?
43
+ request.parameters[key] = value
44
+ end
43
45
  end
44
46
  end
45
47
  end
46
- end
48
+ end
@@ -1,20 +1,22 @@
1
1
  require_relative '../json_able'
2
2
 
3
- module USExtract
4
- # In addition to holding all of the input data for this lookup, this class also will contain the result
5
- # of the lookup after it comes back from the API.
6
- #
7
- # See "https://smartystreets.com/docs/cloud/us-extract-api#http-request-input-fields"
8
- class Lookup < JSONAble
9
- attr_accessor :text, :result, :aggressive, :addresses_per_line, :html, :addresses_have_line_breaks
3
+ module SmartyStreets
4
+ module USExtract
5
+ # In addition to holding all of the input data for this lookup, this class also will contain the result
6
+ # of the lookup after it comes back from the API.
7
+ #
8
+ # See "https://smartystreets.com/docs/cloud/us-extract-api#http-request-input-fields"
9
+ class Lookup < JSONAble
10
+ attr_accessor :text, :result, :aggressive, :addresses_per_line, :html, :addresses_have_line_breaks
10
11
 
11
- def initialize(text=nil, html=nil, aggressive=nil, addresses_have_line_breaks=nil, addresses_per_line=nil)
12
- @text = text
13
- @html = html
14
- @aggressive = aggressive
15
- @addresses_have_line_breaks = addresses_have_line_breaks
16
- @addresses_per_line = addresses_per_line
17
- @result = nil
12
+ def initialize(text=nil, html=nil, aggressive=nil, addresses_have_line_breaks=nil, addresses_per_line=nil)
13
+ @text = text
14
+ @html = html
15
+ @aggressive = aggressive
16
+ @addresses_have_line_breaks = addresses_have_line_breaks
17
+ @addresses_per_line = addresses_per_line
18
+ @result = nil
19
+ end
18
20
  end
19
21
  end
20
22
  end
@@ -1,15 +1,17 @@
1
- module USExtract
2
- # See "https://smartystreets.com/docs/cloud/us-extract-api#http-response-status"
3
- class Metadata
4
- attr_reader :unicode, :lines, :verified_count, :character_count, :bytes, :address_count
1
+ module SmartyStreets
2
+ module USExtract
3
+ # See "https://smartystreets.com/docs/cloud/us-extract-api#http-response-status"
4
+ class Metadata
5
+ attr_reader :unicode, :lines, :verified_count, :character_count, :bytes, :address_count
5
6
 
6
- def initialize(obj)
7
- @lines = obj['lines']
8
- @unicode = obj['unicode']
9
- @address_count = obj['address_count']
10
- @verified_count = obj['verified_count']
11
- @bytes = obj['bytes']
12
- @character_count = obj['character_count']
7
+ def initialize(obj)
8
+ @lines = obj['lines']
9
+ @unicode = obj['unicode']
10
+ @address_count = obj['address_count']
11
+ @verified_count = obj['verified_count']
12
+ @bytes = obj['bytes']
13
+ @character_count = obj['character_count']
14
+ end
13
15
  end
14
16
  end
15
17
  end
@@ -1,19 +1,21 @@
1
1
  require_relative './address'
2
2
  require_relative './metadata'
3
3
 
4
- module USExtract
5
- # See "https://smartystreets.com/docs/cloud/us-extract-api#http-response-status"
6
- class Result
7
- attr_reader :metadata, :addresses
4
+ module SmartyStreets
5
+ module USExtract
6
+ # See "https://smartystreets.com/docs/cloud/us-extract-api#http-response-status"
7
+ class Result
8
+ attr_reader :metadata, :addresses
8
9
 
9
- def initialize(obj)
10
- @metadata = Metadata.new(obj.fetch('meta', {}))
11
- addresses = obj.fetch('addresses', [])
12
- @addresses = []
10
+ def initialize(obj)
11
+ @metadata = USExtract::Metadata.new(obj.fetch('meta', {}))
12
+ addresses = obj.fetch('addresses', [])
13
+ @addresses = []
13
14
 
14
- addresses.each { |address|
15
- @addresses.push(Address.new(address))
16
- }
15
+ addresses.each {|address|
16
+ @addresses.push(Address.new(address))
17
+ }
18
+ end
17
19
  end
18
20
  end
19
21
  end
@@ -6,5 +6,7 @@ require_relative './us_street/lookup'
6
6
  require_relative './us_street/metadata'
7
7
  require_relative './us_street/match_type'
8
8
 
9
- module USStreet
10
- end
9
+ module SmartyStreets
10
+ module USStreet
11
+ end
12
+ end
@@ -1,20 +1,22 @@
1
- module USStreet
2
- # See "https://smartystreets.com/docs/cloud/us-street-api#analysis"
3
- class Analysis
4
- attr_reader :lacs_link_code, :active, :footnotes, :lacs_link_indicator, :dpv_match_code, :is_suite_link_match,
5
- :is_ews_match, :dpv_footnotes, :cmra, :vacant
1
+ module SmartyStreets
2
+ module USStreet
3
+ # See "https://smartystreets.com/docs/cloud/us-street-api#analysis"
4
+ class Analysis
5
+ attr_reader :lacs_link_code, :active, :footnotes, :lacs_link_indicator, :dpv_match_code, :is_suite_link_match,
6
+ :is_ews_match, :dpv_footnotes, :cmra, :vacant
6
7
 
7
- def initialize(obj)
8
- @dpv_match_code = obj['dpv_match_code']
9
- @dpv_footnotes = obj['dpv_footnotes']
10
- @cmra = obj['dpv_cmra']
11
- @vacant = obj['dpv_vacant']
12
- @active = obj['active']
13
- @is_ews_match = obj['ews_match']
14
- @footnotes = obj['footnotes']
15
- @lacs_link_code = obj['lacslink_code']
16
- @lacs_link_indicator = obj['lacslink_indicator']
17
- @is_suite_link_match = obj['suitelink_match']
8
+ def initialize(obj)
9
+ @dpv_match_code = obj['dpv_match_code']
10
+ @dpv_footnotes = obj['dpv_footnotes']
11
+ @cmra = obj['dpv_cmra']
12
+ @vacant = obj['dpv_vacant']
13
+ @active = obj['active']
14
+ @is_ews_match = obj['ews_match']
15
+ @footnotes = obj['footnotes']
16
+ @lacs_link_code = obj['lacslink_code']
17
+ @lacs_link_indicator = obj['lacslink_indicator']
18
+ @is_suite_link_match = obj['suitelink_match']
19
+ end
18
20
  end
19
21
  end
20
- end
22
+ end
@@ -2,23 +2,25 @@ require_relative 'components'
2
2
  require_relative 'metadata'
3
3
  require_relative 'analysis'
4
4
 
5
- module USStreet
6
- # See "https://smartystreets.com/docs/cloud/us-street-api#metadata"
7
- class Candidate
8
- attr_reader :input_index, :candidate_index, :addressee, :delivery_line_1, :delivery_line_2, :delivery_point_barcode,
9
- :last_line, :metadata, :components, :analysis
5
+ module SmartyStreets
6
+ module USStreet
7
+ # See "https://smartystreets.com/docs/cloud/us-street-api#metadata"
8
+ class Candidate
9
+ attr_reader :input_index, :candidate_index, :addressee, :delivery_line_1, :delivery_line_2, :delivery_point_barcode,
10
+ :last_line, :metadata, :components, :analysis
10
11
 
11
- def initialize(obj)
12
- @input_index = obj['input_index']
13
- @candidate_index = obj['candidate_index']
14
- @addressee = obj['addressee']
15
- @delivery_line_1 = obj['delivery_line_1']
16
- @delivery_line_2 = obj['delivery_line_2']
17
- @last_line = obj['last_line']
18
- @delivery_point_barcode = obj['delivery_point_barcode']
19
- @components = Components.new(obj.fetch('components', {}))
20
- @metadata = Metadata.new(obj.fetch('metadata', {}))
21
- @analysis = Analysis.new(obj.fetch('analysis', {}))
12
+ def initialize(obj)
13
+ @input_index = obj['input_index']
14
+ @candidate_index = obj['candidate_index']
15
+ @addressee = obj['addressee']
16
+ @delivery_line_1 = obj['delivery_line_1']
17
+ @delivery_line_2 = obj['delivery_line_2']
18
+ @last_line = obj['last_line']
19
+ @delivery_point_barcode = obj['delivery_point_barcode']
20
+ @components = Components.new(obj.fetch('components', {}))
21
+ @metadata = Metadata.new(obj.fetch('metadata', {}))
22
+ @analysis = Analysis.new(obj.fetch('analysis', {}))
23
+ end
22
24
  end
23
25
  end
24
- end
26
+ end
@@ -2,68 +2,70 @@ require_relative '../batch'
2
2
  require_relative '../request'
3
3
  require_relative 'candidate'
4
4
 
5
- module USStreet
6
- # It is recommended to instantiate this class using ClientBuilder.build_us_street_api_client
7
- class Client
8
- def initialize(sender, serializer)
9
- @sender = sender
10
- @serializer = serializer
11
- end
5
+ module SmartyStreets
6
+ module USStreet
7
+ # It is recommended to instantiate this class using ClientBuilder.build_us_street_api_client
8
+ class Client
9
+ def initialize(sender, serializer)
10
+ @sender = sender
11
+ @serializer = serializer
12
+ end
12
13
 
13
- # Sends a Lookup object to the US Street API and stores the result in the Lookup's result field.
14
- def send_lookup(lookup)
15
- batch = Batch.new
16
- batch.add(lookup)
17
- send_batch(batch)
18
- end
14
+ # Sends a Lookup object to the US Street API and stores the result in the Lookup's result field.
15
+ def send_lookup(lookup)
16
+ batch = SmartyStreets::Batch.new
17
+ batch.add(lookup)
18
+ send_batch(batch)
19
+ end
19
20
 
20
- # Sends a Batch object containing no more than 100 Lookup objects to the US Street API and stores the
21
- # results in the result field of the Lookup object.
22
- def send_batch(batch)
23
- smarty_request = Request.new
21
+ # Sends a Batch object containing no more than 100 Lookup objects to the US Street API and stores the
22
+ # results in the result field of the Lookup object.
23
+ def send_batch(batch)
24
+ smarty_request = Request.new
24
25
 
25
- return if batch.empty?
26
+ return if batch.empty?
26
27
 
27
- converted_lookups = remap_keys(batch.all_lookups)
28
- smarty_request.payload = @serializer.serialize(converted_lookups)
28
+ converted_lookups = remap_keys(batch.all_lookups)
29
+ smarty_request.payload = @serializer.serialize(converted_lookups)
29
30
 
30
- response = @sender.send(smarty_request)
31
+ response = @sender.send(smarty_request)
31
32
 
32
- raise response.error if response.error
33
+ raise response.error if response.error
33
34
 
34
- candidates = @serializer.deserialize(response.payload)
35
- candidates = [] if candidates == nil
35
+ candidates = @serializer.deserialize(response.payload)
36
+ candidates = [] if candidates == nil
36
37
 
37
- assign_candidates_to_lookups(batch, candidates)
38
- end
38
+ assign_candidates_to_lookups(batch, candidates)
39
+ end
39
40
 
40
- def remap_keys(obj)
41
- converted_obj = []
42
- obj.each do |lookup|
43
- converted_lookup = {}
41
+ def remap_keys(obj)
42
+ converted_obj = []
43
+ obj.each do |lookup|
44
+ converted_lookup = {}
44
45
 
45
- converted_lookup['street'] = lookup.street
46
- converted_lookup['street2'] = lookup.street2
47
- converted_lookup['secondary'] = lookup.secondary
48
- converted_lookup['city'] = lookup.city
49
- converted_lookup['state'] = lookup.state
50
- converted_lookup['zipcode'] = lookup.zipcode
51
- converted_lookup['lastline'] = lookup.lastline
52
- converted_lookup['addressee'] = lookup.addressee
53
- converted_lookup['urbanization'] = lookup.urbanization
54
- converted_lookup['match'] = lookup.match
55
- converted_lookup['candidates'] = lookup.candidates
46
+ converted_lookup['street'] = lookup.street
47
+ converted_lookup['street2'] = lookup.street2
48
+ converted_lookup['secondary'] = lookup.secondary
49
+ converted_lookup['city'] = lookup.city
50
+ converted_lookup['state'] = lookup.state
51
+ converted_lookup['zipcode'] = lookup.zipcode
52
+ converted_lookup['lastline'] = lookup.lastline
53
+ converted_lookup['addressee'] = lookup.addressee
54
+ converted_lookup['urbanization'] = lookup.urbanization
55
+ converted_lookup['match'] = lookup.match
56
+ converted_lookup['candidates'] = lookup.candidates
56
57
 
57
- converted_obj.push(converted_lookup)
58
+ converted_obj.push(converted_lookup)
59
+ end
60
+ converted_obj
58
61
  end
59
- converted_obj
60
- end
61
62
 
62
- def assign_candidates_to_lookups(batch, candidates)
63
- candidates.each do |raw_candidate|
64
- candidate = Candidate.new(raw_candidate)
65
- batch[candidate.input_index].result.push(candidate)
63
+ def assign_candidates_to_lookups(batch, candidates)
64
+ candidates.each do |raw_candidate|
65
+ candidate = Candidate.new(raw_candidate)
66
+ batch[candidate.input_index].result.push(candidate)
67
+ end
66
68
  end
67
69
  end
68
70
  end
69
- end
71
+ end
@@ -1,33 +1,35 @@
1
- module USStreet
2
- # This class contains the matched address broken down into its fundamental pieces.
3
- #
4
- # See "https://smartystreets.com/docs/cloud/us-street-api#components"
5
- class Components
6
- attr_reader :street_postdirection, :delivery_point_check_digit, :secondary_designator, :secondary_number, :zipcode,
7
- :pmb_number, :state_abbreviation, :extra_secondary_designator, :urbanization, :street_name, :city_name,
8
- :default_city_name, :street_suffix, :primary_number, :plus4_code, :street_predirection, :pmb_designator,
9
- :extra_secondary_number, :delivery_point
1
+ module SmartyStreets
2
+ module USStreet
3
+ # This class contains the matched address broken down into its fundamental pieces.
4
+ #
5
+ # See "https://smartystreets.com/docs/cloud/us-street-api#components"
6
+ class Components
7
+ attr_reader :street_postdirection, :delivery_point_check_digit, :secondary_designator, :secondary_number, :zipcode,
8
+ :pmb_number, :state_abbreviation, :extra_secondary_designator, :urbanization, :street_name, :city_name,
9
+ :default_city_name, :street_suffix, :primary_number, :plus4_code, :street_predirection, :pmb_designator,
10
+ :extra_secondary_number, :delivery_point
10
11
 
11
- def initialize(obj)
12
- @urbanization = obj['urbanization']
13
- @primary_number = obj['primary_number']
14
- @street_name = obj['street_name']
15
- @street_predirection = obj['street_predirection']
16
- @street_postdirection = obj['street_postdirection']
17
- @street_suffix = obj['street_suffix']
18
- @secondary_number = obj['secondary_number']
19
- @secondary_designator = obj['secondary_designator']
20
- @extra_secondary_number = obj['extra_secondary_number']
21
- @extra_secondary_designator = obj['extra_secondary_designator']
22
- @pmb_designator = obj['pmb_designator']
23
- @pmb_number = obj['pmb_number']
24
- @city_name = obj['city_name']
25
- @default_city_name = obj['default_city_name']
26
- @state_abbreviation = obj['state_abbreviation']
27
- @zipcode = obj['zipcode']
28
- @plus4_code = obj['plus4_code']
29
- @delivery_point = obj['delivery_point']
30
- @delivery_point_check_digit = obj['delivery_point_check_digit']
12
+ def initialize(obj)
13
+ @urbanization = obj['urbanization']
14
+ @primary_number = obj['primary_number']
15
+ @street_name = obj['street_name']
16
+ @street_predirection = obj['street_predirection']
17
+ @street_postdirection = obj['street_postdirection']
18
+ @street_suffix = obj['street_suffix']
19
+ @secondary_number = obj['secondary_number']
20
+ @secondary_designator = obj['secondary_designator']
21
+ @extra_secondary_number = obj['extra_secondary_number']
22
+ @extra_secondary_designator = obj['extra_secondary_designator']
23
+ @pmb_designator = obj['pmb_designator']
24
+ @pmb_number = obj['pmb_number']
25
+ @city_name = obj['city_name']
26
+ @default_city_name = obj['default_city_name']
27
+ @state_abbreviation = obj['state_abbreviation']
28
+ @zipcode = obj['zipcode']
29
+ @plus4_code = obj['plus4_code']
30
+ @delivery_point = obj['delivery_point']
31
+ @delivery_point_check_digit = obj['delivery_point_check_digit']
32
+ end
31
33
  end
32
34
  end
33
- end
35
+ end