smartystreets_ruby_sdk 0.0.0 → 1.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 (99) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +0 -1
  3. data/{LICENSE.md → LICENSE.txt} +1 -1
  4. data/Makefile +17 -31
  5. data/README.md +6 -9
  6. data/Rakefile +2 -5
  7. data/examples/us_street_multiple_address_example.rb +15 -40
  8. data/examples/us_street_single_address_example.rb +8 -32
  9. data/examples/us_zipcode_multiple_lookup_example.rb +9 -21
  10. data/examples/us_zipcode_single_lookup_example.rb +6 -18
  11. data/lib/smartystreets_ruby_sdk/batch.rb +38 -45
  12. data/lib/smartystreets_ruby_sdk/core_client_builder.rb +56 -0
  13. data/lib/smartystreets_ruby_sdk/custom_header_sender.rb +8 -10
  14. data/lib/smartystreets_ruby_sdk/errors.rb +11 -21
  15. data/lib/smartystreets_ruby_sdk/exceptions.rb +16 -27
  16. data/lib/smartystreets_ruby_sdk/json_able.rb +11 -13
  17. data/lib/smartystreets_ruby_sdk/match_type.rb +5 -0
  18. data/lib/smartystreets_ruby_sdk/native_sender.rb +43 -65
  19. data/lib/smartystreets_ruby_sdk/native_serializer.rb +7 -9
  20. data/lib/smartystreets_ruby_sdk/request.rb +8 -11
  21. data/lib/smartystreets_ruby_sdk/response.rb +7 -9
  22. data/lib/smartystreets_ruby_sdk/retry_sender.rb +26 -32
  23. data/lib/smartystreets_ruby_sdk/shared_credentials.rb +9 -11
  24. data/lib/smartystreets_ruby_sdk/signing_sender.rb +9 -11
  25. data/lib/smartystreets_ruby_sdk/sleeper.rb +3 -5
  26. data/lib/smartystreets_ruby_sdk/static_credentials.rb +9 -11
  27. data/lib/smartystreets_ruby_sdk/status_code_sender.rb +29 -33
  28. data/lib/smartystreets_ruby_sdk/url_prefix_sender.rb +9 -11
  29. data/lib/smartystreets_ruby_sdk/us_street/analysis.rb +16 -21
  30. data/lib/smartystreets_ruby_sdk/us_street/candidate.rb +19 -23
  31. data/lib/smartystreets_ruby_sdk/us_street/client.rb +47 -60
  32. data/lib/smartystreets_ruby_sdk/us_street/client_builder.rb +15 -0
  33. data/lib/smartystreets_ruby_sdk/us_street/components.rb +27 -32
  34. data/lib/smartystreets_ruby_sdk/us_street/lookup.rb +20 -27
  35. data/lib/smartystreets_ruby_sdk/us_street/metadata.rb +23 -27
  36. data/lib/smartystreets_ruby_sdk/us_street.rb +3 -5
  37. data/lib/smartystreets_ruby_sdk/us_zipcode/city.rb +8 -14
  38. data/lib/smartystreets_ruby_sdk/us_zipcode/client.rb +36 -51
  39. data/lib/smartystreets_ruby_sdk/us_zipcode/client_builder.rb +15 -0
  40. data/lib/smartystreets_ruby_sdk/us_zipcode/lookup.rb +9 -16
  41. data/lib/smartystreets_ruby_sdk/us_zipcode/result.rb +30 -34
  42. data/lib/smartystreets_ruby_sdk/us_zipcode/zip_code.rb +14 -32
  43. data/lib/smartystreets_ruby_sdk/us_zipcode.rb +3 -5
  44. data/lib/smartystreets_ruby_sdk/version.rb +2 -2
  45. data/lib/smartystreets_ruby_sdk.rb +1 -30
  46. data/smartystreets_ruby_sdk.gemspec +12 -3
  47. metadata +15 -61
  48. data/.github/workflows/gem-publish.yml +0 -58
  49. data/CHANGELOG.md +0 -5
  50. data/Dockerfile +0 -10
  51. data/docker-compose.yml +0 -12
  52. data/examples/international_autocomplete_example.rb +0 -47
  53. data/examples/international_example.rb +0 -53
  54. data/examples/us_autocomplete_pro_example.rb +0 -56
  55. data/examples/us_extract_example.rb +0 -63
  56. data/examples/us_reverse_geo_example.rb +0 -47
  57. data/lib/smartystreets_ruby_sdk/client_builder.rb +0 -188
  58. data/lib/smartystreets_ruby_sdk/international_autocomplete/client.rb +0 -61
  59. data/lib/smartystreets_ruby_sdk/international_autocomplete/lookup.rb +0 -21
  60. data/lib/smartystreets_ruby_sdk/international_autocomplete/suggestion.rb +0 -16
  61. data/lib/smartystreets_ruby_sdk/international_street/analysis.rb +0 -17
  62. data/lib/smartystreets_ruby_sdk/international_street/candidate.rb +0 -23
  63. data/lib/smartystreets_ruby_sdk/international_street/changes.rb +0 -15
  64. data/lib/smartystreets_ruby_sdk/international_street/client.rb +0 -63
  65. data/lib/smartystreets_ruby_sdk/international_street/components.rb +0 -58
  66. data/lib/smartystreets_ruby_sdk/international_street/language_mode.rb +0 -9
  67. data/lib/smartystreets_ruby_sdk/international_street/lookup.rb +0 -82
  68. data/lib/smartystreets_ruby_sdk/international_street/metadata.rb +0 -17
  69. data/lib/smartystreets_ruby_sdk/international_street/rootlevel.rb +0 -25
  70. data/lib/smartystreets_ruby_sdk/international_street.rb +0 -12
  71. data/lib/smartystreets_ruby_sdk/license_sender.rb +0 -15
  72. data/lib/smartystreets_ruby_sdk/logger.rb +0 -7
  73. data/lib/smartystreets_ruby_sdk/proxy.rb +0 -16
  74. data/lib/smartystreets_ruby_sdk/us_autocomplete/client.rb +0 -72
  75. data/lib/smartystreets_ruby_sdk/us_autocomplete/geolocation_type.rb +0 -9
  76. data/lib/smartystreets_ruby_sdk/us_autocomplete/lookup.rb +0 -38
  77. data/lib/smartystreets_ruby_sdk/us_autocomplete/suggestion.rb +0 -16
  78. data/lib/smartystreets_ruby_sdk/us_autocomplete.rb +0 -9
  79. data/lib/smartystreets_ruby_sdk/us_autocomplete_pro/client.rb +0 -78
  80. data/lib/smartystreets_ruby_sdk/us_autocomplete_pro/geolocation_type.rb +0 -8
  81. data/lib/smartystreets_ruby_sdk/us_autocomplete_pro/lookup.rb +0 -63
  82. data/lib/smartystreets_ruby_sdk/us_autocomplete_pro/suggestion.rb +0 -18
  83. data/lib/smartystreets_ruby_sdk/us_autocomplete_pro.rb +0 -10
  84. data/lib/smartystreets_ruby_sdk/us_extract/address.rb +0 -24
  85. data/lib/smartystreets_ruby_sdk/us_extract/client.rb +0 -49
  86. data/lib/smartystreets_ruby_sdk/us_extract/lookup.rb +0 -22
  87. data/lib/smartystreets_ruby_sdk/us_extract/metadata.rb +0 -17
  88. data/lib/smartystreets_ruby_sdk/us_extract/result.rb +0 -21
  89. data/lib/smartystreets_ruby_sdk/us_extract.rb +0 -10
  90. data/lib/smartystreets_ruby_sdk/us_reverse_geo/address.rb +0 -16
  91. data/lib/smartystreets_ruby_sdk/us_reverse_geo/client.rb +0 -38
  92. data/lib/smartystreets_ruby_sdk/us_reverse_geo/coordinate.rb +0 -25
  93. data/lib/smartystreets_ruby_sdk/us_reverse_geo/lookup.rb +0 -21
  94. data/lib/smartystreets_ruby_sdk/us_reverse_geo/result.rb +0 -20
  95. data/lib/smartystreets_ruby_sdk/us_reverse_geo/us_reverse_geo_response.rb +0 -17
  96. data/lib/smartystreets_ruby_sdk/us_reverse_geo.rb +0 -12
  97. data/lib/smartystreets_ruby_sdk/us_street/match_type.rb +0 -10
  98. data/lib/smartystreets_ruby_sdk/us_zipcode/alternate_county.rb +0 -15
  99. data/ruby-sdk-demo.json +0 -354
@@ -1,19 +1,17 @@
1
1
  require 'json'
2
2
 
3
- module SmartyStreets
4
- class JSONAble
5
- def to_json(options={})
6
- hash = {}
7
- instance_variables.each do |var|
8
- hash[var.to_s.delete('@')] = instance_variable_get var
9
- end
10
- hash.to_json
3
+ class JSONAble
4
+ def to_json(options={})
5
+ hash = {}
6
+ self.instance_variables.each do |var|
7
+ hash[var.to_s.delete('@')] = self.instance_variable_get var
11
8
  end
9
+ hash.to_json
10
+ end
12
11
 
13
- def from_json!(string)
14
- JSON.load(string).each do |var, val|
15
- instance_variable_set var, val
16
- end
12
+ def from_json!(string)
13
+ JSON.load(string).each do |var, val|
14
+ self.instance_variable_set var, val
17
15
  end
18
16
  end
19
- end
17
+ end
@@ -0,0 +1,5 @@
1
+ module MatchType
2
+ STRICT = 'strict'
3
+ RANGE = 'range'
4
+ INVALID = 'invalid'
5
+ end
@@ -2,84 +2,62 @@ require 'net/http'
2
2
  require_relative 'version'
3
3
  require_relative 'response'
4
4
 
5
- module SmartyStreets
6
- class NativeSender
7
- def initialize(max_timeout = 10, proxy = nil, debug = false)
8
- @max_timeout = max_timeout
9
- @proxy = proxy
10
- @debug = debug
11
- end
12
-
13
- def send(smarty_request)
14
- request = self.class.build_request(smarty_request)
15
-
16
- begin
17
- http = build_http(request)
18
- http.use_ssl = true
19
- http.ssl_version = :TLSv1_2
20
- http.open_timeout = @max_timeout
21
- http.read_timeout = @max_timeout
22
-
23
- response = http.request(request)
24
-
25
- http.finish if http.started?
26
- rescue StandardError => err
27
- return Response.new(nil, nil, err)
28
- end
5
+ class NativeSender
6
+ def initialize(max_timeout=10000)
7
+ @max_timeout = max_timeout
8
+ end
29
9
 
30
- build_smarty_response(response)
31
- end
10
+ def send(smarty_request)
11
+ request = self.class.build_request(smarty_request)
12
+ uri = request.uri
32
13
 
33
- def self.build_request(smarty_request)
34
- query = create_query(smarty_request)
14
+ begin
15
+ http = Net::HTTP.new(uri.hostname, uri.port)
16
+ http.use_ssl = true
17
+ http.ssl_version = :TLSv1_2
18
+ http.read_timeout = @max_timeout
35
19
 
36
- if smarty_request.payload.nil?
37
- request = Net::HTTP::Get.new(URI.parse("#{smarty_request.url_prefix}?#{query}"))
38
- else
39
- request = Net::HTTP::Post.new(URI.parse("#{smarty_request.url_prefix}?#{query}"))
40
- end
20
+ response = http.request(request)
41
21
 
42
- request.content_type = 'application/json'
43
- request.body = smarty_request.payload
44
- request['User-Agent'] = "smartystreets (sdk:ruby@#{SmartyStreets::VERSION})"
45
- request['Referer'] = smarty_request.referer unless smarty_request.referer.nil?
46
- set_custom_headers(smarty_request.headers, request)
47
- request
22
+ http.finish if http.started?
23
+ rescue Exception => err
24
+ return Response.new(nil, nil, err)
48
25
  end
49
26
 
50
- def build_smarty_response(native_response)
51
- Response.new(native_response.body, native_response.code)
52
- end
27
+ build_smarty_response(response)
28
+ end
53
29
 
54
- def build_http(request)
55
- uri = request.uri
30
+ def self.build_request(smarty_request)
31
+ query = create_query(smarty_request)
32
+ request = Net::HTTP::Post.new(URI.parse("#{smarty_request.url_prefix}?#{query}"))
33
+ request.content_type = 'application/json'
34
+ request.body = smarty_request.payload
35
+ request['User-Agent'] = "smartystreets (sdk:ruby@#{SmartystreetsRubySdk::VERSION})"
36
+ request['Referer'] = smarty_request.referer if smarty_request.referer != nil
37
+ set_custom_headers(smarty_request.headers, request)
38
+ request
39
+ end
56
40
 
57
- if @proxy.nil?
58
- http = Net::HTTP.new(uri.hostname, uri.port)
59
- else
60
- http = Net::HTTP.new(uri.hostname, uri.port, @proxy.host,
61
- @proxy.port, @proxy.username, @proxy.password)
62
- end
41
+ def build_smarty_response(native_response)
42
+ Response.new(native_response.body, native_response.code)
43
+ end
63
44
 
64
- http.set_debug_output($stdout) if @debug
45
+ def self.create_query(smarty_request)
46
+ query_string = ''
65
47
 
66
- http
48
+ smarty_request.parameters.each do |key, value|
49
+ query_string.concat("&#{key}=#{value}")
67
50
  end
68
51
 
69
- def self.create_query(smarty_request)
70
- URI.encode_www_form(smarty_request.parameters)
71
- end
52
+ query_string[0] = ''
53
+ query_string
54
+ end
72
55
 
73
- def self.set_custom_headers(smarty_headers, request)
74
- smarty_headers.each do |key, values|
75
- if values.respond_to? :each
76
- values.each do |value|
77
- request.add_field(key, value)
78
- end
79
- else
80
- request.add_field(key, values)
81
- end
56
+ def self.set_custom_headers(smarty_headers, request)
57
+ smarty_headers.each do |key, values|
58
+ values.each do |value|
59
+ request.add_field(key, value)
82
60
  end
83
61
  end
84
62
  end
85
- end
63
+ end
@@ -1,13 +1,11 @@
1
1
  require 'json'
2
2
 
3
- module SmartyStreets
4
- class NativeSerializer
5
- def serialize(obj)
6
- obj.to_json
7
- end
3
+ class NativeSerializer
4
+ def serialize(obj)
5
+ obj.to_json
6
+ end
8
7
 
9
- def deserialize(payload)
10
- JSON.load(payload)
11
- end
8
+ def deserialize(payload)
9
+ JSON.load(payload)
12
10
  end
13
- end
11
+ end
@@ -1,14 +1,11 @@
1
- module SmartyStreets
2
- class Request
3
- attr_accessor :parameters, :payload, :url_prefix, :referer, :headers, :content_type
1
+ class Request
2
+ attr_accessor :parameters, :payload, :url_prefix, :referer, :headers
4
3
 
5
- def initialize
6
- @parameters = {}
7
- @payload = nil
8
- @url_prefix = nil
9
- @referer = nil
10
- @headers = {}
11
- @content_type = 'application/json'
12
- end
4
+ def initialize
5
+ @parameters = {}
6
+ @payload = nil
7
+ @url_prefix = nil
8
+ @referer = nil
9
+ @headers = {}
13
10
  end
14
11
  end
@@ -1,11 +1,9 @@
1
- module SmartyStreets
2
- class Response
3
- attr_accessor :payload, :status_code, :error
1
+ class Response
2
+ attr_accessor :payload, :status_code, :error
4
3
 
5
- def initialize(payload, status_code, error = nil)
6
- @payload = payload
7
- @status_code = status_code
8
- @error = error
9
- end
4
+ def initialize(payload, status_code, error=nil)
5
+ @payload = payload
6
+ @status_code = status_code
7
+ @error = error
10
8
  end
11
- end
9
+ end
@@ -1,39 +1,33 @@
1
- module SmartyStreets
2
- class RetrySender
3
- MAX_BACKOFF_DURATION = 10
4
- STATUS_INTERNAL_SERVER_ERROR = 500
5
- STATUS_TOO_MANY_REQUESTS = 429
6
-
7
- def initialize(max_retries, inner, sleeper, logger)
8
- @max_retries = max_retries
9
- @inner = inner
10
- @sleeper = sleeper
11
- @logger = logger
12
- end
13
-
14
- def send(request)
15
- response = @inner.send(request)
16
-
17
- (0..@max_retries-1).each do |i|
18
- if response.status_code.to_i == STATUS_TOO_MANY_REQUESTS
19
- backoff(5)
20
- end
21
-
22
- break if response.status_code.to_i < STATUS_INTERNAL_SERVER_ERROR
1
+ class RetrySender
2
+ MAX_BACKOFF_DURATION = 10
3
+ STATUS_OK = '200'
4
+
5
+ def initialize(max_retries, inner, sleeper)
6
+ @max_retries = max_retries
7
+ @inner = inner
8
+ @sleeper = sleeper
9
+ end
23
10
 
24
- backoff(i)
11
+ def send(request)
12
+ response = @inner.send(request)
25
13
 
26
- response = @inner.send(request)
14
+ (0..@max_retries-1).each { |i|
15
+ if response.status_code == STATUS_OK
16
+ break
27
17
  end
28
18
 
29
- response
30
- end
19
+ backoff(i)
20
+
21
+ response = @inner.send(request)
22
+ }
23
+
24
+ response
25
+ end
31
26
 
32
- def backoff(attempt)
33
- backoff_duration = [attempt, MAX_BACKOFF_DURATION].min
27
+ def backoff(attempt)
28
+ backoff_duration = [attempt, MAX_BACKOFF_DURATION].min
34
29
 
35
- @logger.log("There was an error processing the request. Retrying in #{backoff_duration} seconds...")
36
- @sleeper.sleep(backoff_duration)
37
- end
30
+ puts("There was an error processing the request. Retrying in #{backoff_duration} seconds...")
31
+ @sleeper.sleep(backoff_duration)
38
32
  end
39
- end
33
+ end
@@ -1,13 +1,11 @@
1
- module SmartyStreets
2
- class SharedCredentials
3
- def initialize(id, host_name)
4
- @id = id
5
- @host_name = host_name
6
- end
1
+ class SharedCredentials
2
+ def initialize(id, host_name)
3
+ @id = id
4
+ @host_name = host_name
5
+ end
7
6
 
8
- def sign(request)
9
- request.parameters['key'] = @id
10
- request.referer = @host_name
11
- end
7
+ def sign(request)
8
+ request.parameters['auth-id'] = @id
9
+ request.referer = @host_name
12
10
  end
13
- end
11
+ end
@@ -1,13 +1,11 @@
1
- module SmartyStreets
2
- class SigningSender
3
- def initialize(signer, inner)
4
- @signer = signer
5
- @inner = inner
6
- end
1
+ class SigningSender
2
+ def initialize(signer, inner)
3
+ @signer = signer
4
+ @inner = inner
5
+ end
7
6
 
8
- def send(request)
9
- @signer.sign(request)
10
- @inner.send(request)
11
- end
7
+ def send(request)
8
+ @signer.sign(request)
9
+ @inner.send(request)
12
10
  end
13
- end
11
+ end
@@ -1,7 +1,5 @@
1
- module SmartyStreets
2
- class Sleeper
3
- def sleep(seconds)
4
- Kernel::sleep(seconds)
5
- end
1
+ class Sleeper
2
+ def sleep(seconds)
3
+ Kernel::sleep(seconds)
6
4
  end
7
5
  end
@@ -1,13 +1,11 @@
1
- module SmartyStreets
2
- class StaticCredentials
3
- def initialize(auth_id, auth_token)
4
- @auth_id = auth_id
5
- @auth_token = auth_token
6
- end
1
+ class StaticCredentials
2
+ def initialize(auth_id, auth_token)
3
+ @auth_id = auth_id
4
+ @auth_token = auth_token
5
+ end
7
6
 
8
- def sign(request)
9
- request.parameters['auth-id'] = @auth_id
10
- request.parameters['auth-token'] = @auth_token
11
- end
7
+ def sign(request)
8
+ request.parameters['auth-id'] = @auth_id
9
+ request.parameters['auth-token'] = @auth_token
12
10
  end
13
- end
11
+ end
@@ -1,41 +1,37 @@
1
1
  require_relative 'exceptions'
2
2
  require_relative 'errors'
3
3
 
4
- module SmartyStreets
5
- class StatusCodeSender
6
- def initialize(inner)
7
- @inner = inner
8
- end
4
+ class StatusCodeSender
5
+ def initialize(inner)
6
+ @inner = inner
7
+ end
9
8
 
10
- def send(request)
11
- response = @inner.send(request)
9
+ def send(request)
10
+ response = @inner.send(request)
12
11
 
13
- assign_exception(response) if response.error == nil
12
+ assign_exception(response) if response.error == nil
14
13
 
15
- response
16
- end
14
+ response
15
+ end
17
16
 
18
- def assign_exception(response)
19
- response.error = case response.status_code
20
- when '401'
21
- BadCredentialsError.new(BAD_CREDENTIALS)
22
- when '402'
23
- PaymentRequiredError.new(PAYMENT_REQUIRED)
24
- when '413'
25
- RequestEntityTooLargeError.new(REQUEST_ENTITY_TOO_LARGE)
26
- when '400'
27
- BadRequestError.new(BAD_REQUEST)
28
- when '422'
29
- UnprocessableEntityError.new(UNPROCESSABLE_ENTITY)
30
- when '429'
31
- TooManyRequestsError.new(TOO_MANY_REQUESTS)
32
- when '500'
33
- InternalServerError.new(INTERNAL_SERVER_ERROR)
34
- when '503'
35
- ServiceUnavailableError.new(SERVICE_UNAVAILABLE)
36
- else
37
- nil
38
- end
39
- end
17
+ def assign_exception(response)
18
+ response.error = case response.status_code
19
+ when '401'
20
+ BadCredentialsError.new(BAD_CREDENTIALS)
21
+ when '402'
22
+ PaymentRequiredError.new(PAYMENT_REQUIRED)
23
+ when '413'
24
+ RequestEntityTooLargeError.new(REQUEST_ENTITY_TOO_LARGE)
25
+ when '400'
26
+ BadRequestError.new(BAD_REQUEST)
27
+ when '429'
28
+ TooManyRequestsError.new(TOO_MANY_REQUESTS)
29
+ when '500'
30
+ InternalServerError.new(INTERNAL_SERVER_ERROR)
31
+ when '503'
32
+ ServiceUnavailableError.new(SERVICE_UNAVAILABLE)
33
+ else
34
+ nil
35
+ end
40
36
  end
41
- end
37
+ end
@@ -1,14 +1,12 @@
1
- module SmartyStreets
2
- class URLPrefixSender
3
- def initialize(url_prefix, inner)
4
- @url_prefix = url_prefix
5
- @inner = inner
6
- end
1
+ class URLPrefixSender
2
+ def initialize(url_prefix, inner)
3
+ @url_prefix = url_prefix
4
+ @inner = inner
5
+ end
7
6
 
8
- def send(request)
9
- request.url_prefix = @url_prefix
7
+ def send(request)
8
+ request.url_prefix = @url_prefix
10
9
 
11
- @inner.send(request)
12
- end
10
+ @inner.send(request)
13
11
  end
14
- end
12
+ end
@@ -1,24 +1,19 @@
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, :no_stat, :enhanced_match
1
+ module USStreet
2
+ class Analysis
3
+ attr_reader :lacs_link_code, :active, :footnotes, :lacs_link_indicator, :dpv_match_code, :is_suite_link_match,
4
+ :is_ews_match, :dpv_footnotes, :cmra, :vacant
7
5
 
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
- @no_stat = obj['dpv_no_stat']
14
- @active = obj['active']
15
- @is_ews_match = obj['ews_match']
16
- @footnotes = obj['footnotes']
17
- @lacs_link_code = obj['lacslink_code']
18
- @lacs_link_indicator = obj['lacslink_indicator']
19
- @is_suite_link_match = obj['suitelink_match']
20
- @enhanced_match = obj['enhanced_match']
21
- end
6
+ def initialize(obj)
7
+ @dpv_match_code = obj['dpv_match_code']
8
+ @dpv_footnotes = obj['dpv_footnotes']
9
+ @cmra = obj['dpv_cmra']
10
+ @vacant = obj['dpv_vacant']
11
+ @active = obj['active']
12
+ @is_ews_match = obj['ews_match']
13
+ @footnotes = obj['footnotes']
14
+ @lacs_link_code = obj['lacslink_code']
15
+ @lacs_link_indicator = obj['lacslink_indicator']
16
+ @is_suite_link_match = obj['suitelink_match']
22
17
  end
23
18
  end
24
- end
19
+ end
@@ -1,27 +1,23 @@
1
- require_relative 'components'
2
- require_relative 'metadata'
3
- require_relative 'analysis'
1
+ require_relative 'Components'
2
+ require_relative 'Metadata'
3
+ require_relative 'Analysis'
4
4
 
5
- module SmartyStreets
6
- module USStreet
7
- # See "https://smartystreets.com/docs/cloud/us-street-api#metadata"
8
- class Candidate
9
- attr_reader :input_id, :input_index, :candidate_index, :addressee, :delivery_line_1, :delivery_line_2, :delivery_point_barcode,
10
- :last_line, :metadata, :components, :analysis
5
+ module USStreet
6
+ class Candidate
7
+ attr_reader :input_index, :candidate_index, :addressee, :delivery_line_1, :delivery_line_2, :delivery_point_barcode,
8
+ :last_line, :metadata, :components, :analysis
11
9
 
12
- def initialize(obj)
13
- @input_id = obj['input_id']
14
- @input_index = obj['input_index']
15
- @candidate_index = obj['candidate_index']
16
- @addressee = obj['addressee']
17
- @delivery_line_1 = obj['delivery_line_1']
18
- @delivery_line_2 = obj['delivery_line_2']
19
- @last_line = obj['last_line']
20
- @delivery_point_barcode = obj['delivery_point_barcode']
21
- @components = Components.new(obj.fetch('components', {}))
22
- @metadata = Metadata.new(obj.fetch('metadata', {}))
23
- @analysis = Analysis.new(obj.fetch('analysis', {}))
24
- end
10
+ def initialize(obj)
11
+ @input_index = obj['input_index']
12
+ @candidate_index = obj['candidate_index']
13
+ @addressee = obj['addressee']
14
+ @delivery_line_1 = obj['delivery_line_1']
15
+ @delivery_line_2 = obj['delivery_line_2']
16
+ @last_line = obj['last_line']
17
+ @delivery_point_barcode = obj['delivery_point_barcode']
18
+ @components = Components.new(obj.fetch('components', {}))
19
+ @metadata = Metadata.new(obj.fetch('metadata', {}))
20
+ @analysis = Analysis.new(obj.fetch('analysis', {}))
25
21
  end
26
22
  end
27
- end
23
+ end