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 +4 -4
- data/examples/international_autocomplete_example.rb +47 -0
- data/lib/smartystreets_ruby_sdk/client_builder.rb +6 -0
- data/lib/smartystreets_ruby_sdk/international_autocomplete/client.rb +61 -0
- data/lib/smartystreets_ruby_sdk/international_autocomplete/lookup.rb +21 -0
- data/lib/smartystreets_ruby_sdk/international_autocomplete/suggestion.rb +16 -0
- data/lib/smartystreets_ruby_sdk/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb354ac31fa7cc2bd045b1bb7877e8a0daf5b491d3863d23ea27ace3f38ed637
|
4
|
+
data.tar.gz: 86ad9f8c1371467d314f59e0f7f7588e5c66d10fcf4d6ba039cdf7afedfa6295
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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.
|
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-
|
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
|