smartystreets_ruby_sdk 5.8.0 → 5.9.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/us_reverse_geo_example.rb +42 -0
- data/lib/smartystreets_ruby_sdk.rb +1 -0
- data/lib/smartystreets_ruby_sdk/client_builder.rb +7 -0
- data/lib/smartystreets_ruby_sdk/us_reverse_geo.rb +12 -0
- data/lib/smartystreets_ruby_sdk/us_reverse_geo/address.rb +16 -0
- data/lib/smartystreets_ruby_sdk/us_reverse_geo/client.rb +38 -0
- data/lib/smartystreets_ruby_sdk/us_reverse_geo/coordinate.rb +16 -0
- data/lib/smartystreets_ruby_sdk/us_reverse_geo/lookup.rb +21 -0
- data/lib/smartystreets_ruby_sdk/us_reverse_geo/result.rb +20 -0
- data/lib/smartystreets_ruby_sdk/us_reverse_geo/us_reverse_geo_response.rb +17 -0
- data/lib/smartystreets_ruby_sdk/version.rb +1 -1
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52fd48c6c51199f3dcd357a5acc5f6bc16a6ea53ed8d5467be6a00bfe5abb864
|
4
|
+
data.tar.gz: faebc7c05c2e636c6c7b0cc687d24970abf7b1a695c8d4d68a03d5a62e8e46c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0d0d14bd4b4e8846f588b3743f7fc1fe026d3cb5270935885cde1d371d85bc01342b2a1b8cb62a4220392d064e5a76fb375fe497ee5400b2ccb1d59832a8a45
|
7
|
+
data.tar.gz: 8270d077871bf469999c5a864f58374f78000276ad4cbdcc85cc395d43c40f3d7152a71e4aa7c4ed7e8cd1d0731b24c5031557d417cb30891aedc2033a9d71cc
|
@@ -0,0 +1,42 @@
|
|
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
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
USReverseGeoExample.new.run
|
@@ -26,6 +26,7 @@ require 'smartystreets_ruby_sdk/us_street'
|
|
26
26
|
require 'smartystreets_ruby_sdk/us_zipcode'
|
27
27
|
require 'smartystreets_ruby_sdk/us_autocomplete'
|
28
28
|
require 'smartystreets_ruby_sdk/international_street'
|
29
|
+
require 'smartystreets_ruby_sdk/us_reverse_geo'
|
29
30
|
|
30
31
|
module SmartyStreets
|
31
32
|
end
|
@@ -14,6 +14,7 @@ require_relative 'us_zipcode/client'
|
|
14
14
|
require_relative 'us_extract/client'
|
15
15
|
require_relative 'us_autocomplete/client'
|
16
16
|
require_relative 'international_street/client'
|
17
|
+
require_relative 'us_reverse_geo/client'
|
17
18
|
|
18
19
|
module SmartyStreets
|
19
20
|
# The ClientBuilder class helps you build a client object for one of the supported SmartyStreets APIs.
|
@@ -25,6 +26,7 @@ module SmartyStreets
|
|
25
26
|
US_EXTRACT_API_URL = 'https://us-extract.api.smartystreets.com/'.freeze
|
26
27
|
US_STREET_API_URL = 'https://us-street.api.smartystreets.com/street-address'.freeze
|
27
28
|
US_ZIP_CODE_API_URL = 'https://us-zipcode.api.smartystreets.com/lookup'.freeze
|
29
|
+
US_REVERSE_GEO_API_URL = 'https://us-reverse-geo.api.smartystreets.com/lookup'.freeze
|
28
30
|
|
29
31
|
def initialize(signer)
|
30
32
|
@signer = signer
|
@@ -141,6 +143,11 @@ module SmartyStreets
|
|
141
143
|
USZipcode::Client.new(build_sender, @serializer)
|
142
144
|
end
|
143
145
|
|
146
|
+
def build_us_reverse_geo_api_client
|
147
|
+
ensure_url_prefix_not_null(US_REVERSE_GEO_API_URL)
|
148
|
+
USReverseGeo::Client.new(build_sender, @serializer)
|
149
|
+
end
|
150
|
+
|
144
151
|
# </editor-fold>
|
145
152
|
|
146
153
|
def build_sender
|
@@ -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,16 @@
|
|
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
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
@@ -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
|
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.9.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: 2020-
|
11
|
+
date: 2020-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -93,6 +93,7 @@ files:
|
|
93
93
|
- examples/international_example.rb
|
94
94
|
- examples/us_autocomplete_example.rb
|
95
95
|
- examples/us_extract_example.rb
|
96
|
+
- examples/us_reverse_geo_example.rb
|
96
97
|
- examples/us_street_multiple_address_example.rb
|
97
98
|
- examples/us_street_single_address_example.rb
|
98
99
|
- examples/us_zipcode_multiple_lookup_example.rb
|
@@ -139,6 +140,13 @@ files:
|
|
139
140
|
- lib/smartystreets_ruby_sdk/us_extract/lookup.rb
|
140
141
|
- lib/smartystreets_ruby_sdk/us_extract/metadata.rb
|
141
142
|
- lib/smartystreets_ruby_sdk/us_extract/result.rb
|
143
|
+
- lib/smartystreets_ruby_sdk/us_reverse_geo.rb
|
144
|
+
- lib/smartystreets_ruby_sdk/us_reverse_geo/address.rb
|
145
|
+
- lib/smartystreets_ruby_sdk/us_reverse_geo/client.rb
|
146
|
+
- lib/smartystreets_ruby_sdk/us_reverse_geo/coordinate.rb
|
147
|
+
- lib/smartystreets_ruby_sdk/us_reverse_geo/lookup.rb
|
148
|
+
- lib/smartystreets_ruby_sdk/us_reverse_geo/result.rb
|
149
|
+
- lib/smartystreets_ruby_sdk/us_reverse_geo/us_reverse_geo_response.rb
|
142
150
|
- lib/smartystreets_ruby_sdk/us_street.rb
|
143
151
|
- lib/smartystreets_ruby_sdk/us_street/analysis.rb
|
144
152
|
- lib/smartystreets_ruby_sdk/us_street/candidate.rb
|