smartystreets_ruby_sdk 3.1.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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