smartystreets_ruby_sdk 0.0.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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