smartystreets_ruby_sdk 5.12.1 → 5.14.3

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: c9b875a25fbdd31a426fa6fdfb61dfc62d2fce2c8a1e5b9baebf6933076bf77b
4
- data.tar.gz: 9aab93b22abe5671ed4a63e0482f44a995e1871e3ad02459d10e53f40eb2107c
3
+ metadata.gz: 9d02af89c4f23a2ee8609900f75bd708036b0a5bccaa34e51d0d3100cc2df8b5
4
+ data.tar.gz: 9fb18a334690fe5fc8420c1a1dcc30374a7162603469201a8c7abae01259b220
5
5
  SHA512:
6
- metadata.gz: 9ad7fd90449fcea0eb99a810366f4f428295b0e14e54e30af98cd3935206bd9dfdad4e8e31667f434a7ccefb4422a5299133189822ee4c8bee264d5a1a147e4f
7
- data.tar.gz: 2ccab08012c1ce1c88100353e908d5c83c3a6d4831fc9705e6b5ce035553ec05652cc6fc3973166897dc221b7c5ad3fb411d689d529eff11caa37e38876959fa
6
+ metadata.gz: a424c5a78886aaab175634774bd8abfc33ddd673d909eade4f1159a75ceebaaa3b3001a8dd46ec8fa388736a02891fa4e5e396a3faa1d69e7f8de7941e075bca
7
+ data.tar.gz: 5396e88defd12c5899346cee54de6f663f40575460e51765e0fbda1a05f8a9c6ed8cd5f68c9040b074576bb3b5f550fe2154b8bb3f95c0ff39ba9c51c37357b4
@@ -0,0 +1,47 @@
1
+ require 'smartystreets_ruby_sdk/shared_credentials'
2
+ require '../lib/smartystreets_ruby_sdk/client_builder'
3
+ require '../lib/smartystreets_ruby_sdk/international_autocomplete/lookup'
4
+ require '../lib/smartystreets_ruby_sdk/international_autocomplete/client'
5
+
6
+ class USAutocompleteProExample
7
+ Lookup = SmartyStreets::InternationalAutocomplete::Lookup
8
+
9
+ def run
10
+ # key = 'Your SmartyStreets Auth ID here'
11
+ # hostname = 'Your SmartyStreets Auth Token here'
12
+
13
+ # We recommend storing your secret keys in environment variables instead---it's safer!
14
+ key = ENV['SMARTY_AUTH_WEB']
15
+ referer = ENV['SMARTY_AUTH_REFERER']
16
+
17
+ credentials = SmartyStreets::SharedCredentials.new(key, referer)
18
+
19
+ # The appropriate license values to be used for your subscriptions
20
+ # can be found on the Subscriptions page of the account dashboard.
21
+ # https://www.smartystreets.com/docs/cloud/licensing
22
+ client = SmartyStreets::ClientBuilder.new(credentials).with_licenses(['international-autocomplete-cloud'])
23
+ .build_international_autocomplete_api_client
24
+
25
+ # Documentation for input fields can be found at:
26
+ # https://smartystreets.com/docs/cloud/us-autocomplete-api
27
+
28
+ lookup = Lookup.new('Louis')
29
+ lookup.country = "FRA"
30
+ lookup.locality = "Paris"
31
+
32
+ suggestions = client.send(lookup) # The client will also return the suggestions directly
33
+
34
+ puts
35
+ puts '*** Result with some filters ***'
36
+ puts
37
+
38
+ suggestions.each do |suggestion|
39
+ puts "#{suggestion.street} #{suggestion.locality}, #{suggestion.country_iso3}"
40
+ end
41
+
42
+ end
43
+ end
44
+
45
+ USAutocompleteProExample.new.run
46
+
47
+
@@ -24,12 +24,14 @@ class USAutocompleteProExample
24
24
  # Documentation for input fields can be found at:
25
25
  # https://smartystreets.com/docs/cloud/us-autocomplete-api
26
26
 
27
- lookup = Lookup.new('4770 Lincoln Ave O')
28
- lookup.max_results = 10
29
- lookup.add_city_filter('Ogden')
30
- lookup.add_state_filter('IL')
27
+ lookup = Lookup.new('1042 W Center')
28
+ lookup.add_state_filter('CO')
29
+ lookup.add_state_filter('UT')
30
+ lookup.add_city_filter('Denver')
31
+ lookup.add_city_filter('Orem')
31
32
  lookup.max_results = 5
32
33
  lookup.prefer_ratio = 3
34
+ lookup.source = "all"
33
35
 
34
36
  suggestions = client.send(lookup) # The client will also return the suggestions directly
35
37
 
@@ -23,6 +23,7 @@ module SmartyStreets
23
23
  # These methods are chainable, so you can usually get set up with one line of code.
24
24
  class ClientBuilder
25
25
  INTERNATIONAL_STREET_API_URL = 'https://international-street.api.smartystreets.com/verify'.freeze
26
+ INTERNATIONAL_AUTOCOMPLETE_API_URL = "https://international-autocomplete.api.smartystreets.com/lookup".freeze
26
27
  US_AUTOCOMPLETE_API_URL = 'https://us-autocomplete.api.smartystreets.com/suggest'.freeze
27
28
  US_AUTOCOMPLETE_PRO_API_URL = 'https://us-autocomplete-pro.api.smartystreets.com/lookup'.freeze
28
29
  US_EXTRACT_API_URL = 'https://us-extract.api.smartystreets.com/'.freeze
@@ -125,6 +126,11 @@ module SmartyStreets
125
126
  InternationalStreet::Client.new(build_sender, @serializer)
126
127
  end
127
128
 
129
+ def build_international_autocomplete_api_client
130
+ ensure_url_prefix_not_null(INTERNATIONAL_AUTOCOMPLETE_API_URL)
131
+ InternationalAutocomplete::Client.new(build_sender, @serializer)
132
+ end
133
+
128
134
  def build_us_autocomplete_api_client # Deprecated
129
135
  ensure_url_prefix_not_null(US_AUTOCOMPLETE_API_URL)
130
136
  USAutocomplete::Client.new(build_sender, @serializer)
@@ -0,0 +1,61 @@
1
+ require_relative '../request'
2
+ require_relative '../exceptions'
3
+ require_relative 'suggestion'
4
+
5
+ module SmartyStreets
6
+ module InternationalAutocomplete
7
+ # It is recommended to instantiate this class using ClientBuilder.build_international_autocomplete_api_client
8
+ class Client
9
+ def initialize(sender, serializer)
10
+ @sender = sender
11
+ @serializer = serializer
12
+ end
13
+
14
+ # Sends a Lookup object to the International Autocomplete API and stores the result in the Lookup's result field.
15
+ def send(lookup)
16
+ if not lookup or not lookup.search
17
+ raise SmartyStreets::SmartyError, 'Send() must be passed a Lookup with the prefix field set.'
18
+ end
19
+
20
+ request = build_request(lookup)
21
+
22
+ response = @sender.send(request)
23
+
24
+ raise response.error if response.error
25
+
26
+ result = @serializer.deserialize(response.payload)
27
+ suggestions = convert_suggestions(result)
28
+ lookup.result = suggestions
29
+ end
30
+
31
+
32
+ def build_request(lookup)
33
+ request = Request.new
34
+
35
+ add_parameter(request, 'search', lookup.search)
36
+ add_parameter(request, 'country', lookup.country)
37
+ add_parameter(request, 'include_only_administrative_area', lookup.administrative_area)
38
+ add_parameter(request, 'include_only_locality', lookup.locality)
39
+ add_parameter(request, 'include_only_postal_code', lookup.postal_code)
40
+
41
+ request
42
+ end
43
+
44
+ def convert_suggestions(suggestion_hashes)
45
+ converted_suggestions = []
46
+ return converted_suggestions if suggestion_hashes.nil?
47
+
48
+ suggestion_hashes.each do |suggestion|
49
+ converted_suggestions.push(InternationalAutocomplete::Suggestion.new(suggestion))
50
+ end
51
+
52
+ converted_suggestions
53
+ end
54
+
55
+ def add_parameter(request, key, value)
56
+ request.parameters[key] = value unless value.nil? or value.empty?
57
+ end
58
+ end
59
+ end
60
+ end
61
+
@@ -0,0 +1,21 @@
1
+ require_relative '../json_able'
2
+
3
+ module SmartyStreets
4
+ module InternationalAutocomplete
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
+ class Lookup < JSONAble
8
+
9
+ attr_accessor :result, :search, :country, :administrative_area, :locality, :postal_code
10
+
11
+ def initialize(search=nil, country=nil, administrative_area=nil, locality=nil, postal_code=nil)
12
+ @result = []
13
+ @search = search
14
+ @country = country
15
+ @administrative_area = administrative_area
16
+ @locality = locality
17
+ @postal_code = postal_code
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,16 @@
1
+ module SmartyStreets
2
+ module InternationalAutocomplete
3
+ class Suggestion
4
+
5
+ attr_reader :street, :locality, :administrative_area, :postal_code, :country_iso3
6
+
7
+ def initialize(obj)
8
+ @street = obj.fetch('street', nil)
9
+ @locality = obj.fetch('locality', nil)
10
+ @administrative_area = obj.fetch('administrative_area', nil)
11
+ @postal_code = obj.fetch('postal_code', nil)
12
+ @country_iso3 = obj.fetch('country_iso3', nil)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -17,6 +17,7 @@ module SmartyStreets
17
17
  http = build_http(request)
18
18
  http.use_ssl = true
19
19
  http.ssl_version = :TLSv1_2
20
+ http.open_timeout = @max_timeout
20
21
  http.read_timeout = @max_timeout
21
22
 
22
23
  response = http.request(request)
@@ -43,6 +43,7 @@ module SmartyStreets
43
43
  add_parameter(request, 'prefer_states', build_filter_string(lookup.prefer_states))
44
44
  add_parameter(request, 'prefer_zip_codes', build_filter_string(lookup.prefer_zip_codes))
45
45
  add_parameter(request, 'prefer_ratio', lookup.prefer_ratio.to_s)
46
+ add_parameter(request, 'source', lookup.source)
46
47
  if lookup.prefer_zip_codes or lookup.zip_filter
47
48
  request.parameters['prefer_geolocation'] = GeolocationType::NONE
48
49
  else
@@ -54,7 +55,7 @@ module SmartyStreets
54
55
  end
55
56
 
56
57
  def build_filter_string(filter_list)
57
- filter_list ? filter_list.join(',') : nil
58
+ filter_list ? filter_list.join(';') : nil
58
59
  end
59
60
 
60
61
  def convert_suggestions(suggestion_hashes)
@@ -9,11 +9,12 @@ module SmartyStreets
9
9
  class Lookup < JSONAble
10
10
 
11
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
12
+ :exclude_states, :prefer_cities, :prefer_states, :prefer_zip_codes, :prefer_ratio,
13
+ :prefer_geolocation, :selected, :source
13
14
 
14
15
  def initialize(search=nil, max_results=nil, city_filter=nil, state_filter=nil, zip_filter=nil,
15
16
  exclude_states=nil, prefer_cities=nil, prefer_states=nil, prefer_zips=nil, prefer_ratio=nil,
16
- prefer_geolocation=nil, selected=nil)
17
+ prefer_geolocation=nil, selected=nil, source=nil)
17
18
  @result = []
18
19
  @search = search
19
20
  @max_results = max_results
@@ -27,6 +28,7 @@ module SmartyStreets
27
28
  @prefer_ratio = prefer_ratio
28
29
  @prefer_geolocation = prefer_geolocation
29
30
  @selected = selected
31
+ @source = source
30
32
  end
31
33
 
32
34
  def add_city_filter(city)
@@ -1,3 +1,3 @@
1
1
  module SmartyStreets
2
- VERSION = '5.12.1' # DO NOT EDIT (this is updated by a build job when a new release is published)
2
+ VERSION = '5.14.3' # DO NOT EDIT (this is updated by a build job when a new release is published)
3
3
  end
@@ -19,8 +19,8 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.add_development_dependency 'bundler', '~> 1.13'
23
- spec.add_development_dependency 'rake', '~> 10.0'
22
+ spec.add_development_dependency 'bundler', '~> 2.2.27'
23
+ spec.add_development_dependency 'rake', '~> 12.3.3'
24
24
  spec.add_development_dependency 'minitest', '~> 5.8', '>= 5.8.3'
25
25
  spec.add_development_dependency 'simplecov', '~> 0.12.0'
26
26
  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.12.1
4
+ version: 5.14.3
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: 2021-08-20 00:00:00.000000000 Z
11
+ date: 2021-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.13'
19
+ version: 2.2.27
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.13'
26
+ version: 2.2.27
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: 12.3.3
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: 12.3.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -90,6 +90,7 @@ files:
90
90
  - bin/console
91
91
  - bin/setup
92
92
  - docker-compose.yml
93
+ - examples/international_autocomplete_example.rb
93
94
  - examples/international_example.rb
94
95
  - examples/us_autocomplete_pro_example.rb
95
96
  - examples/us_extract_example.rb
@@ -104,6 +105,9 @@ files:
104
105
  - lib/smartystreets_ruby_sdk/custom_header_sender.rb
105
106
  - lib/smartystreets_ruby_sdk/errors.rb
106
107
  - lib/smartystreets_ruby_sdk/exceptions.rb
108
+ - lib/smartystreets_ruby_sdk/international_autocomplete/client.rb
109
+ - lib/smartystreets_ruby_sdk/international_autocomplete/lookup.rb
110
+ - lib/smartystreets_ruby_sdk/international_autocomplete/suggestion.rb
107
111
  - lib/smartystreets_ruby_sdk/international_street.rb
108
112
  - lib/smartystreets_ruby_sdk/international_street/analysis.rb
109
113
  - lib/smartystreets_ruby_sdk/international_street/candidate.rb