smartystreets_ruby_sdk 5.7.1 → 5.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f3f797e2c9674c76b4aa28327d6025f8dafbc03c821e4b40c33ad4b860b2b384
4
- data.tar.gz: dcf25fb1ff0beda7ecb68dbb68fdf08ac4fdf47e1df83b71962e8bb7a514ec68
3
+ metadata.gz: f89f84d4011a28b76ab8d465d6739df79e5a1627913aba1727a86db053e3af30
4
+ data.tar.gz: 4a14fd611da96954d6741aa14298f86e6348deeae245306d10eb52630f23a670
5
5
  SHA512:
6
- metadata.gz: 5145440547a474124f14556947e1b7ada72145f6359e1b3f7e23a667418dcaf9f9c13770e1de0bc10d22a374065dc247b760151c8419d5b3587447cd1686fb55
7
- data.tar.gz: 104c0f77fa4d74cf8e3cbad86ab5fe41a13a41f773009e0cccfad394f35d94035d717bb5f15a7db44b17c1d075cc5c763d4a4c4462bc54fe114e54ef31cb7b90
6
+ metadata.gz: 2e2d508cb7906c19db797a60feb00adbd5e132e4aadd2b656b7e362253a74308a1e792bef5e8216b2e1bb741ccd5228a86e329ea16835151d1cf094b5097dbe7
7
+ data.tar.gz: 7bf6945deeb19c48e22bd3f5aa78b42e5aa4a678a977c6a9aeef00fa4457423e7748e69e8a4f4f9798683c618e2a24c2b55f632f86c50d2541b03717f8f382bf
data/README.md CHANGED
@@ -27,7 +27,3 @@ And then execute:
27
27
  Or install it yourself as:
28
28
 
29
29
  $ gem install smartystreets_ruby_sdk
30
-
31
-
32
-
33
-
@@ -14,7 +14,8 @@ class InternationalExample
14
14
  # auth_token = ENV['SMARTY_AUTH_TOKEN']
15
15
 
16
16
  credentials = SmartyStreets::StaticCredentials.new(auth_id, auth_token)
17
- client = SmartyStreets::ClientBuilder.new(credentials).build_international_street_api_client
17
+ client = SmartyStreets::ClientBuilder.new(credentials) # .with_licenses(%w(international-fake-license))
18
+ .build_international_street_api_client
18
19
 
19
20
  # Documentation for input fields can be found at:
20
21
  # https://smartystreets.com/docs/cloud/international-street-api
@@ -0,0 +1,43 @@
1
+ require 'smartystreets_ruby_sdk/shared_credentials'
2
+ require '../lib/smartystreets_ruby_sdk/client_builder'
3
+ require '../lib/smartystreets_ruby_sdk/us_autocomplete_pro/lookup'
4
+
5
+ class USAutocompleteProExample
6
+ Lookup = SmartyStreets::USAutocompletePro::Lookup
7
+
8
+ def run
9
+ # key = 'Your SmartyStreets Auth ID here'
10
+ # hostname = 'Your SmartyStreets Auth Token here'
11
+
12
+ # We recommend storing your secret keys in environment variables instead---it's safer!
13
+ key = ENV['SMARTY_AUTH_WEB']
14
+ referer = ENV['SMARTY_AUTH_REFERER']
15
+
16
+ credentials = SmartyStreets::SharedCredentials.new(key, referer)
17
+ client = SmartyStreets::ClientBuilder.new(credentials).build_us_autocomplete_pro_api_client
18
+
19
+ # Documentation for input fields can be found at:
20
+ # https://smartystreets.com/docs/cloud/us-autocomplete-api
21
+
22
+ lookup = Lookup.new('4770 Lincoln Ave O')
23
+ lookup.max_results = 10
24
+ lookup.add_city_filter('Ogden')
25
+ lookup.add_state_filter('IL')
26
+ lookup.max_results = 5
27
+ lookup.prefer_ratio = 3
28
+
29
+ suggestions = client.send(lookup) # The client will also return the suggestions directly
30
+
31
+ puts
32
+ puts '*** Result with some filters ***'
33
+ puts
34
+
35
+ suggestions.each do |suggestion|
36
+ puts "#{suggestion.street_line} #{suggestion.city}, #{suggestion.state}"
37
+ end
38
+
39
+ end
40
+ end
41
+
42
+ USAutocompleteProExample.new.run
43
+
@@ -0,0 +1,43 @@
1
+ require 'smartystreets_ruby_sdk/static_credentials'
2
+ require '../lib/smartystreets_ruby_sdk/client_builder'
3
+ require '../lib/smartystreets_ruby_sdk/us_reverse_geo/lookup'
4
+
5
+ class USReverseGeoExample
6
+ Lookup = SmartyStreets::USReverseGeo::Lookup
7
+
8
+ def run
9
+ auth_id = 'Your SmartyStreets Auth ID here'
10
+ auth_token = 'Your SmartyStreets Auth Token here'
11
+
12
+ # We recommend storing your secret keys in environment variables instead---it's safer!
13
+ # auth_id = ENV['SMARTY_AUTH_ID']
14
+ # auth_token = ENV['SMARTY_AUTH_TOKEN']
15
+
16
+ credentials = SmartyStreets::StaticCredentials.new(auth_id, auth_token)
17
+ client = SmartyStreets::ClientBuilder.new(credentials)
18
+ .build_us_reverse_geo_api_client
19
+
20
+ # Documentation for input fields can be found at:
21
+ # https://smartystreets.com/docs/cloud/us-reverse-geo-api#http-request-input-fields
22
+
23
+ lookup = Lookup.new(40.111111, -111.111111)
24
+
25
+ response = client.send(lookup)
26
+ result = response.results[0]
27
+
28
+ coordinate = result.coordinate
29
+ puts "Latitude: #{coordinate.latitude}"
30
+ puts "Longitude: #{coordinate.longitude}\n"
31
+
32
+ puts "Distance: #{result.distance}\n"
33
+
34
+ address = result.address
35
+ puts "Street: #{address.street}"
36
+ puts "City: #{address.city}"
37
+ puts "State Abbreviation: #{address.state_abbreviation}"
38
+ puts "ZIP Code: #{address.zipcode}"
39
+ puts "License: #{coordinate.get_license}"
40
+ end
41
+ end
42
+
43
+ USReverseGeoExample.new.run
@@ -16,7 +16,8 @@ class USStreetMultipleAddressExample
16
16
 
17
17
  credentials = SmartyStreets::StaticCredentials.new(auth_id, auth_token)
18
18
 
19
- client = SmartyStreets::ClientBuilder.new(credentials).build_us_street_api_client
19
+ client = SmartyStreets::ClientBuilder.new(credentials) # .with_licenses(%w(us-rooftop-geocoding-cloud))
20
+ .build_us_street_api_client
20
21
  batch = SmartyStreets::Batch.new
21
22
 
22
23
  # Documentation for input fields can be found at:
@@ -14,6 +14,7 @@ require 'smartystreets_ruby_sdk/native_serializer'
14
14
  require 'smartystreets_ruby_sdk/request'
15
15
  require 'smartystreets_ruby_sdk/response'
16
16
  require 'smartystreets_ruby_sdk/retry_sender'
17
+ require 'smartystreets_ruby_sdk/license_sender'
17
18
  require 'smartystreets_ruby_sdk/shared_credentials'
18
19
  require 'smartystreets_ruby_sdk/signing_sender'
19
20
  require 'smartystreets_ruby_sdk/static_credentials'
@@ -24,7 +25,9 @@ require 'smartystreets_ruby_sdk/us_extract'
24
25
  require 'smartystreets_ruby_sdk/us_street'
25
26
  require 'smartystreets_ruby_sdk/us_zipcode'
26
27
  require 'smartystreets_ruby_sdk/us_autocomplete'
28
+ require 'smartystreets_ruby_sdk/us_autocomplete_pro'
27
29
  require 'smartystreets_ruby_sdk/international_street'
30
+ require 'smartystreets_ruby_sdk/us_reverse_geo'
28
31
 
29
32
  module SmartyStreets
30
33
  end
@@ -4,6 +4,7 @@ require_relative 'status_code_sender'
4
4
  require_relative 'signing_sender'
5
5
  require_relative 'retry_sender'
6
6
  require_relative 'url_prefix_sender'
7
+ require_relative 'license_sender'
7
8
  require_relative 'sleeper'
8
9
  require_relative 'logger'
9
10
  require_relative 'proxy'
@@ -13,6 +14,8 @@ require_relative 'us_zipcode/client'
13
14
  require_relative 'us_extract/client'
14
15
  require_relative 'us_autocomplete/client'
15
16
  require_relative 'international_street/client'
17
+ require_relative 'us_reverse_geo/client'
18
+ require_relative 'us_autocomplete_pro/client'
16
19
 
17
20
  module SmartyStreets
18
21
  # The ClientBuilder class helps you build a client object for one of the supported SmartyStreets APIs.
@@ -21,9 +24,11 @@ module SmartyStreets
21
24
  class ClientBuilder
22
25
  INTERNATIONAL_STREET_API_URL = 'https://international-street.api.smartystreets.com/verify'.freeze
23
26
  US_AUTOCOMPLETE_API_URL = 'https://us-autocomplete.api.smartystreets.com/suggest'.freeze
27
+ US_AUTOCOMPLETE_PRO_API_URL = 'https://us-autocomplete-pro.api.smartystreets.com/lookup'.freeze
24
28
  US_EXTRACT_API_URL = 'https://us-extract.api.smartystreets.com/'.freeze
25
29
  US_STREET_API_URL = 'https://us-street.api.smartystreets.com/street-address'.freeze
26
30
  US_ZIP_CODE_API_URL = 'https://us-zipcode.api.smartystreets.com/lookup'.freeze
31
+ US_REVERSE_GEO_API_URL = 'https://us-reverse-geo.api.smartystreets.com/lookup'.freeze
27
32
 
28
33
  def initialize(signer)
29
34
  @signer = signer
@@ -34,6 +39,7 @@ module SmartyStreets
34
39
  @url_prefix = nil
35
40
  @proxy = nil
36
41
  @headers = nil
42
+ @licenses = %w()
37
43
  @debug = nil
38
44
  end
39
45
 
@@ -96,6 +102,14 @@ module SmartyStreets
96
102
  self
97
103
  end
98
104
 
105
+ # Allows the caller to specify the subscription license (aka "track") they wish to use.
106
+ #
107
+ # Returns self to accommodate method chaining.
108
+ def with_licenses(licenses)
109
+ @licenses.concat licenses
110
+ self
111
+ end
112
+
99
113
  # Enables debug mode, which will print information about the HTTP request and response to $stdout.
100
114
  #
101
115
  # Returns self to accommodate method chaining.
@@ -116,6 +130,11 @@ module SmartyStreets
116
130
  USAutocomplete::Client.new(build_sender, @serializer)
117
131
  end
118
132
 
133
+ def build_us_autocomplete_pro_api_client
134
+ ensure_url_prefix_not_null(US_AUTOCOMPLETE_PRO_API_URL)
135
+ USAutocompletePro::Client.new(build_sender, @serializer)
136
+ end
137
+
119
138
  def build_us_extract_api_client
120
139
  ensure_url_prefix_not_null(US_EXTRACT_API_URL)
121
140
  USExtract::Client.new(build_sender, @serializer)
@@ -131,6 +150,11 @@ module SmartyStreets
131
150
  USZipcode::Client.new(build_sender, @serializer)
132
151
  end
133
152
 
153
+ def build_us_reverse_geo_api_client
154
+ ensure_url_prefix_not_null(US_REVERSE_GEO_API_URL)
155
+ USReverseGeo::Client.new(build_sender, @serializer)
156
+ end
157
+
134
158
  # </editor-fold>
135
159
 
136
160
  def build_sender
@@ -146,6 +170,8 @@ module SmartyStreets
146
170
 
147
171
  sender = RetrySender.new(@max_retries, sender, SmartyStreets::Sleeper.new,SmartyStreets::Logger.new) if @max_retries > 0
148
172
 
173
+ sender = LicenseSender.new(sender, @licenses)
174
+
149
175
  URLPrefixSender.new(@url_prefix, sender)
150
176
  end
151
177
 
@@ -50,8 +50,10 @@ module SmartyStreets
50
50
  def convert_candidates(raw_candidates)
51
51
  candidates = []
52
52
 
53
- raw_candidates.each do |candidate|
54
- candidates.push(Candidate.new(candidate))
53
+ unless raw_candidates.nil?
54
+ raw_candidates.each do |candidate|
55
+ candidates.push(Candidate.new(candidate))
56
+ end
55
57
  end
56
58
 
57
59
  candidates
@@ -0,0 +1,15 @@
1
+ module SmartyStreets
2
+ class LicenseSender
3
+ def initialize(inner, licenses)
4
+ @inner = inner
5
+ @licenses = licenses
6
+ end
7
+
8
+ def send(request)
9
+ if @licenses.length > 0
10
+ request.parameters['license'] = @licenses.join(',')
11
+ end
12
+ @inner.send(request)
13
+ end
14
+ end
15
+ end
@@ -6,7 +6,7 @@ module SmartyStreets
6
6
  end
7
7
 
8
8
  def sign(request)
9
- request.parameters['auth-id'] = @id
9
+ request.parameters['key'] = @id
10
10
  request.referer = @host_name
11
11
  end
12
12
  end
@@ -0,0 +1,10 @@
1
+ require_relative './us_autocomplete_pro/lookup'
2
+ require_relative './us_autocomplete_pro/geolocation_type'
3
+ require_relative './us_autocomplete_pro/suggestion'
4
+ require_relative './us_autocomplete_pro/client'
5
+
6
+ module SmartyStreets
7
+ module USAutocompletePro
8
+ end
9
+ end
10
+
@@ -0,0 +1,77 @@
1
+ require_relative '../request'
2
+ require_relative '../exceptions'
3
+ require_relative 'geolocation_type'
4
+ require_relative 'suggestion'
5
+
6
+ module SmartyStreets
7
+ module USAutocompletePro
8
+ # It is recommended to instantiate this class using ClientBuilder.build_us_autocomplete_pro_api_client
9
+ class Client
10
+ def initialize(sender, serializer)
11
+ @sender = sender
12
+ @serializer = serializer
13
+ end
14
+
15
+ # Sends a Lookup object to the US Autocomplete Pro API and stores the result in the Lookup's result field.
16
+ def send(lookup)
17
+ if not lookup or not lookup.search
18
+ raise SmartyStreets::SmartyError, 'Send() must be passed a Lookup with the prefix field set.'
19
+ end
20
+
21
+ request = build_request(lookup)
22
+
23
+ response = @sender.send(request)
24
+
25
+ raise response.error if response.error
26
+
27
+ result = @serializer.deserialize(response.payload)
28
+ suggestions = convert_suggestions(result.fetch('suggestions', []))
29
+ lookup.result = suggestions
30
+ end
31
+
32
+
33
+ def build_request(lookup)
34
+ request = Request.new
35
+
36
+ add_parameter(request, 'search', lookup.search)
37
+ add_parameter(request, 'max_results', lookup.max_results.to_s)
38
+ add_parameter(request, 'include_only_cities', build_filter_string(lookup.city_filter))
39
+ add_parameter(request, 'include_only_states', build_filter_string(lookup.state_filter))
40
+ add_parameter(request, 'include_only_zip_codes', build_filter_string(lookup.zip_filter))
41
+ add_parameter(request, 'exclude_states', build_filter_string(lookup.exclude_states))
42
+ add_parameter(request, 'prefer_cities', build_filter_string(lookup.prefer_cities))
43
+ add_parameter(request, 'prefer_states', build_filter_string(lookup.prefer_states))
44
+ add_parameter(request, 'prefer_zip_codes', build_filter_string(lookup.prefer_zip_codes))
45
+ add_parameter(request, 'prefer_ratio', lookup.prefer_ratio.to_s)
46
+ if lookup.prefer_zip_codes or lookup.zip_filter
47
+ request.parameters['prefer_geolocation'] = GeolocationType::NONE
48
+ else
49
+ add_parameter(request, 'prefer_geolocation', lookup.prefer_geolocation)
50
+ end
51
+ add_parameter(request, 'selected', lookup.selected)
52
+
53
+ request
54
+ end
55
+
56
+ def build_filter_string(filter_list)
57
+ filter_list ? filter_list.join(',') : nil
58
+ end
59
+
60
+ def convert_suggestions(suggestion_hashes)
61
+ converted_suggestions = []
62
+ return converted_suggestions if suggestion_hashes.nil?
63
+
64
+ suggestion_hashes.each do |suggestion|
65
+ converted_suggestions.push(USAutocompletePro::Suggestion.new(suggestion))
66
+ end
67
+
68
+ converted_suggestions
69
+ end
70
+
71
+ def add_parameter(request, key, value)
72
+ request.parameters[key] = value unless value.nil? or value.empty?
73
+ end
74
+ end
75
+ end
76
+ end
77
+
@@ -0,0 +1,8 @@
1
+ module SmartyStreets
2
+ module USAutocompletePro
3
+ module GeolocationType
4
+ CITY = 'city'
5
+ NONE = 'none'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,61 @@
1
+ require_relative '../json_able'
2
+
3
+ module SmartyStreets
4
+ module USAutocompletePro
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-autocomplete-api#http-request-input-fields"
9
+ class Lookup < JSONAble
10
+
11
+ attr_accessor :result, :search, :max_results, :city_filter, :state_filter, :zip_filter,
12
+ :exclude_states, :prefer_cities, :prefer_states, :prefer_zip_codes, :prefer_ratio, :prefer_geolocation, :selected
13
+
14
+ def initialize(search=nil, max_results=nil, city_filter=nil, state_filter=nil, zip_filter=nil,
15
+ exclude_states=nil, prefer_cities=nil, prefer_states=nil, prefer_zips=nil, prefer_ratio=nil,
16
+ prefer_geolocation=nil, selected=nil)
17
+ @result = []
18
+ @search = search
19
+ @max_results = max_results
20
+ @city_filter = city_filter ? city_filter : []
21
+ @state_filter = state_filter ? state_filter : []
22
+ @zip_filter = zip_filter ? zip_filter : []
23
+ @exclude_states = exclude_states ? exclude_states : []
24
+ @prefer_cities = prefer_cities ? prefer_cities : []
25
+ @prefer_states = prefer_states ? prefer_states : []
26
+ @prefer_zip_codes = prefer_zips ? prefer_zips : []
27
+ @prefer_ratio = prefer_ratio
28
+ @prefer_geolocation = prefer_geolocation
29
+ @selected = selected
30
+ end
31
+
32
+ def add_city_filter(city)
33
+ @city_filter.push(city)
34
+ end
35
+
36
+ def add_state_filter(state)
37
+ @state_filter.push(state)
38
+ end
39
+
40
+ def add_zip_filter(zip)
41
+ @zip_filter.push(zip)
42
+ end
43
+
44
+ def add_state_exclusion(state)
45
+ @exclude_states.push(state)
46
+ end
47
+
48
+ def add_preferred_city(city)
49
+ @prefer_cities.push(city)
50
+ end
51
+
52
+ def add_preferred_state(state)
53
+ @prefer_states.push(state)
54
+ end
55
+
56
+ def add_preferred_zip(zip)
57
+ @prefer_zip_codes.push(zip)
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,18 @@
1
+ module SmartyStreets
2
+ module USAutocompletePro
3
+ # See "https://smartystreets.com/docs/cloud/us-autocomplete-api#http-response"
4
+ class Suggestion
5
+
6
+ attr_reader :street_line, :secondary, :city, :state, :zipcode, :entries
7
+
8
+ def initialize(obj)
9
+ @street_line = obj.fetch('street_line', nil)
10
+ @secondary = obj.fetch('secondary', nil)
11
+ @city = obj.fetch('city', nil)
12
+ @state = obj.fetch('state', nil)
13
+ @zipcode = obj.fetch('zipcode', nil)
14
+ @entries = obj.fetch('entries', 0)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,12 @@
1
+ require_relative './us_reverse_geo/address'
2
+ require_relative './us_reverse_geo/client'
3
+ require_relative './us_reverse_geo/coordinate'
4
+ require_relative './us_reverse_geo/lookup'
5
+ require_relative './us_reverse_geo/result'
6
+ require_relative './us_reverse_geo/us_reverse_geo_response'
7
+
8
+ module SmartyStreets
9
+ module USReverseGeo
10
+ end
11
+ end
12
+
@@ -0,0 +1,16 @@
1
+ module SmartyStreets
2
+ module USReverseGeo
3
+ # See "https://smartystreets.com/docs/cloud/us-reverse-geo-api#address"
4
+ class Address
5
+ attr_reader :street, :city, :state_abbreviation, :zipcode
6
+
7
+ def initialize(obj)
8
+ @street = obj['street']
9
+ @city = obj['city']
10
+ @state_abbreviation = obj['state_abbreviation']
11
+ @zipcode = obj['zipcode']
12
+ end
13
+ end
14
+ end
15
+ end
16
+
@@ -0,0 +1,38 @@
1
+ require_relative '../request'
2
+ require_relative 'us_reverse_geo_response'
3
+
4
+ module SmartyStreets
5
+ module USReverseGeo
6
+ # It is recommended to instantiate this class using ClientBuilder.build_us_reverse_geo_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 Reverse Geo API and stores the result in the Lookup's response field.
14
+ def send(lookup)
15
+ request = build_request(lookup)
16
+
17
+ response = @sender.send(request)
18
+
19
+ raise response.error if response.error
20
+
21
+ lookup.response = Response.new(@serializer.deserialize(response.payload))
22
+ end
23
+
24
+ def build_request(lookup)
25
+ request = SmartyStreets::Request.new
26
+
27
+ add_parameter(request, 'latitude', lookup.latitude)
28
+ add_parameter(request, 'longitude', lookup.longitude)
29
+
30
+ request
31
+ end
32
+
33
+ def add_parameter(request, key, value)
34
+ request.parameters[key] = value unless value.nil? or value.empty?
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,25 @@
1
+ module SmartyStreets
2
+ module USReverseGeo
3
+ # See "https://smartystreets.com/docs/cloud/us-reverse-geo-api#coordinate"
4
+ class Coordinate
5
+ attr_reader :latitude, :longitude, :accuracy, :license
6
+
7
+ def initialize(obj)
8
+ @latitude = obj.fetch('latitude', nil)
9
+ @longitude = obj.fetch('longitude', nil)
10
+ @accuracy = obj.fetch('accuracy', nil)
11
+ @license = obj.fetch('license', nil)
12
+ end
13
+
14
+ def get_license()
15
+ case @license
16
+ when 1
17
+ return "SmartyStreets Proprietary"
18
+ else
19
+ return "SmartyStreets"
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+
@@ -0,0 +1,21 @@
1
+ module SmartyStreets
2
+ module USReverseGeo
3
+ # In addition to holding all of the input data for this lookup, this class also will contain the
4
+ # result of the lookup after it comes back from the API.
5
+ #
6
+ # Note: Lookups must have certain required fields set with non-blank values.
7
+ # These can be found at the URL below.
8
+ #
9
+ # See "https://smartystreets.com/docs/cloud/us-reverse-geo-api#http-request-input-fields"
10
+
11
+ class Lookup
12
+
13
+ attr_accessor :latitude, :longitude, :response
14
+
15
+ def initialize(latitude, longitude)
16
+ @latitude = sprintf('%.8f', latitude)
17
+ @longitude = sprintf('%.8f', longitude)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'coordinate'
2
+ require_relative 'address'
3
+
4
+ module SmartyStreets
5
+ module USReverseGeo
6
+ # A result is a possible match for an geocode that was submitted. A lookup can have multiple results.
7
+ #
8
+ # See "https://smartystreets.com/docs/cloud/us-reverse-geo-api#result"
9
+ class Result
10
+ attr_reader :address, :coordinate, :distance
11
+
12
+ def initialize(obj)
13
+ @address = Address.new(obj.fetch('address', {}))
14
+ @coordinate = Coordinate.new(obj.fetch('coordinate', {}))
15
+ @distance = obj['distance']
16
+ end
17
+ end
18
+ end
19
+ end
20
+
@@ -0,0 +1,17 @@
1
+ require_relative 'result'
2
+
3
+ module SmartyStreets
4
+ module USReverseGeo
5
+ class Response
6
+ attr_reader :results
7
+
8
+ def initialize(obj)
9
+ @results = []
10
+
11
+ obj['results'].each do |result|
12
+ @results.push(Result.new(result))
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -3,13 +3,14 @@ module SmartyStreets
3
3
  # See "https://smartystreets.com/docs/cloud/us-street-api#analysis"
4
4
  class Analysis
5
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
+ :is_ews_match, :dpv_footnotes, :cmra, :vacant, :no_stat
7
7
 
8
8
  def initialize(obj)
9
9
  @dpv_match_code = obj['dpv_match_code']
10
10
  @dpv_footnotes = obj['dpv_footnotes']
11
11
  @cmra = obj['dpv_cmra']
12
12
  @vacant = obj['dpv_vacant']
13
+ @no_stat = obj['dpv_no_stat']
13
14
  @active = obj['active']
14
15
  @is_ews_match = obj['ews_match']
15
16
  @footnotes = obj['footnotes']
@@ -1,3 +1,3 @@
1
1
  module SmartyStreets
2
- VERSION = '5.7.1' # DO NOT EDIT (this is updated by a build job when a new release is published)
2
+ VERSION = '5.10.0' # DO NOT EDIT (this is updated by a build job when a new release is published)
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smartystreets_ruby_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.7.1
4
+ version: 5.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SmartyStreets SDK Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-25 00:00:00.000000000 Z
11
+ date: 2021-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -92,7 +92,9 @@ files:
92
92
  - docker-compose.yml
93
93
  - examples/international_example.rb
94
94
  - examples/us_autocomplete_example.rb
95
+ - examples/us_autocomplete_pro_example.rb
95
96
  - examples/us_extract_example.rb
97
+ - examples/us_reverse_geo_example.rb
96
98
  - examples/us_street_multiple_address_example.rb
97
99
  - examples/us_street_single_address_example.rb
98
100
  - examples/us_zipcode_multiple_lookup_example.rb
@@ -114,6 +116,7 @@ files:
114
116
  - lib/smartystreets_ruby_sdk/international_street/metadata.rb
115
117
  - lib/smartystreets_ruby_sdk/international_street/rootlevel.rb
116
118
  - lib/smartystreets_ruby_sdk/json_able.rb
119
+ - lib/smartystreets_ruby_sdk/license_sender.rb
117
120
  - lib/smartystreets_ruby_sdk/logger.rb
118
121
  - lib/smartystreets_ruby_sdk/native_sender.rb
119
122
  - lib/smartystreets_ruby_sdk/native_serializer.rb
@@ -132,12 +135,24 @@ files:
132
135
  - lib/smartystreets_ruby_sdk/us_autocomplete/geolocation_type.rb
133
136
  - lib/smartystreets_ruby_sdk/us_autocomplete/lookup.rb
134
137
  - lib/smartystreets_ruby_sdk/us_autocomplete/suggestion.rb
138
+ - lib/smartystreets_ruby_sdk/us_autocomplete_pro.rb
139
+ - lib/smartystreets_ruby_sdk/us_autocomplete_pro/client.rb
140
+ - lib/smartystreets_ruby_sdk/us_autocomplete_pro/geolocation_type.rb
141
+ - lib/smartystreets_ruby_sdk/us_autocomplete_pro/lookup.rb
142
+ - lib/smartystreets_ruby_sdk/us_autocomplete_pro/suggestion.rb
135
143
  - lib/smartystreets_ruby_sdk/us_extract.rb
136
144
  - lib/smartystreets_ruby_sdk/us_extract/address.rb
137
145
  - lib/smartystreets_ruby_sdk/us_extract/client.rb
138
146
  - lib/smartystreets_ruby_sdk/us_extract/lookup.rb
139
147
  - lib/smartystreets_ruby_sdk/us_extract/metadata.rb
140
148
  - lib/smartystreets_ruby_sdk/us_extract/result.rb
149
+ - lib/smartystreets_ruby_sdk/us_reverse_geo.rb
150
+ - lib/smartystreets_ruby_sdk/us_reverse_geo/address.rb
151
+ - lib/smartystreets_ruby_sdk/us_reverse_geo/client.rb
152
+ - lib/smartystreets_ruby_sdk/us_reverse_geo/coordinate.rb
153
+ - lib/smartystreets_ruby_sdk/us_reverse_geo/lookup.rb
154
+ - lib/smartystreets_ruby_sdk/us_reverse_geo/result.rb
155
+ - lib/smartystreets_ruby_sdk/us_reverse_geo/us_reverse_geo_response.rb
141
156
  - lib/smartystreets_ruby_sdk/us_street.rb
142
157
  - lib/smartystreets_ruby_sdk/us_street/analysis.rb
143
158
  - lib/smartystreets_ruby_sdk/us_street/candidate.rb
@@ -175,7 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
190
  - !ruby/object:Gem::Version
176
191
  version: '0'
177
192
  requirements: []
178
- rubygems_version: 3.0.3
193
+ rubygems_version: 3.1.2
179
194
  signing_key:
180
195
  specification_version: 4
181
196
  summary: An official library for the SmartyStreets APIs