smartystreets_ruby_sdk 5.13.0 → 5.14.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.
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