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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 535dcd015e5d60cfb19fceef8fcaaf21571bc32a1273e59f8b21b3fcb71e7361
4
- data.tar.gz: f994e9282f74263c7fbdc411c7a90cc5a41f04cdfe58fd7d5a41668e8ce90090
3
+ metadata.gz: 52fd48c6c51199f3dcd357a5acc5f6bc16a6ea53ed8d5467be6a00bfe5abb864
4
+ data.tar.gz: faebc7c05c2e636c6c7b0cc687d24970abf7b1a695c8d4d68a03d5a62e8e46c1
5
5
  SHA512:
6
- metadata.gz: 503dd289bba672c6068784ca929a14b265a57f80f30e5faa9840a3962b67937c0a200e8ad450783077723d0eff1ff8e7681dafc6a4d98d4fe6ac68171ac17cf8
7
- data.tar.gz: ea7e7babd854b053bdda4ddfc43ad88f47c6b12ed26a53f2681b72635a191b46b3e70e46c5cd15d292d146d8ba546251acf129e4dcb81260bb499d1b499c36dc
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
@@ -1,3 +1,3 @@
1
1
  module SmartyStreets
2
- VERSION = '5.8.0' # DO NOT EDIT (this is updated by a build job when a new release is published)
2
+ VERSION = '5.9.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.8.0
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-08-25 00:00:00.000000000 Z
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