smartystreets_ruby_sdk 5.8.0 → 5.9.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|