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 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