smartystreets_ruby_sdk 5.13.0 → 5.14.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: 423a76efb5b1f719deb33c17e0a7799e9ed6a6e7b6b570a2ffb19d1fb5aa89d1
4
- data.tar.gz: 6b307ac880704d629a735f3d32f0535e7cee3678ebef7db6611f01299c786b72
3
+ metadata.gz: eb354ac31fa7cc2bd045b1bb7877e8a0daf5b491d3863d23ea27ace3f38ed637
4
+ data.tar.gz: 86ad9f8c1371467d314f59e0f7f7588e5c66d10fcf4d6ba039cdf7afedfa6295
5
5
  SHA512:
6
- metadata.gz: 509b66bf2ea805128a40c0603be38d283407015c9e179e2c635bad3b947efd228a287fd52959b24b80a7682c4ccadbd8e6b7f7750f04766d9b4a5cac42f8377d
7
- data.tar.gz: 343069ee8fd58bea6f4c90bdf90baa5cd050456c0521d93f2fa43064ea04d1d524c3e027ec83dd14844dae66f04f62d74a85fd7c8cc806b4bbd5375fb7700c26
6
+ metadata.gz: 85550fb289d9a64084aaa321f7d71a13f95c6d2bd116e6ac81728c3ad12030182778899a00659124957975875c11b5c5d49b24ffa62feb09b1c712f114f82651
7
+ data.tar.gz: e3af8c142b7dbadae883ccb9b3af2e62cf37c242c3fe6dd214df13bfe1f1cbe0d1b993d695bbbb678fdf1a5ce8d529e58c9c8dba8bf15ca35296d8d8927c188a
@@ -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
+
@@ -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
@@ -1,3 +1,3 @@
1
1
  module SmartyStreets
2
- VERSION = '5.13.0' # DO NOT EDIT (this is updated by a build job when a new release is published)
2
+ VERSION = '5.14.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.13.0
4
+ version: 5.14.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: 2021-09-23 00:00:00.000000000 Z
11
+ date: 2021-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -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