smartystreets_ruby_sdk 3.1.0 → 4.0.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.
Files changed (65) hide show
  1. data/Makefile +1 -1
  2. data/examples/international_example.rb +3 -3
  3. data/examples/us_autocomplete_example.rb +3 -3
  4. data/examples/us_extract_example.rb +3 -3
  5. data/examples/us_street_multiple_address_example.rb +6 -5
  6. data/examples/us_street_single_address_example.rb +5 -5
  7. data/examples/us_zipcode_multiple_lookup_example.rb +6 -5
  8. data/examples/us_zipcode_single_lookup_example.rb +4 -4
  9. data/lib/smartystreets_ruby_sdk.rb +26 -4
  10. data/lib/smartystreets_ruby_sdk/batch.rb +44 -41
  11. data/lib/smartystreets_ruby_sdk/client_builder.rb +115 -113
  12. data/lib/smartystreets_ruby_sdk/custom_header_sender.rb +10 -8
  13. data/lib/smartystreets_ruby_sdk/errors.rb +13 -11
  14. data/lib/smartystreets_ruby_sdk/exceptions.rb +27 -23
  15. data/lib/smartystreets_ruby_sdk/international_street.rb +3 -1
  16. data/lib/smartystreets_ruby_sdk/international_street/analysis.rb +11 -9
  17. data/lib/smartystreets_ruby_sdk/international_street/candidate.rb +28 -26
  18. data/lib/smartystreets_ruby_sdk/international_street/client.rb +45 -43
  19. data/lib/smartystreets_ruby_sdk/international_street/components.rb +53 -51
  20. data/lib/smartystreets_ruby_sdk/international_street/language_mode.rb +7 -3
  21. data/lib/smartystreets_ruby_sdk/international_street/lookup.rb +63 -61
  22. data/lib/smartystreets_ruby_sdk/international_street/metadata.rb +12 -10
  23. data/lib/smartystreets_ruby_sdk/json_able.rb +13 -11
  24. data/lib/smartystreets_ruby_sdk/logger.rb +2 -2
  25. data/lib/smartystreets_ruby_sdk/native_sender.rb +58 -56
  26. data/lib/smartystreets_ruby_sdk/native_serializer.rb +9 -7
  27. data/lib/smartystreets_ruby_sdk/proxy.rb +2 -2
  28. data/lib/smartystreets_ruby_sdk/request.rb +11 -9
  29. data/lib/smartystreets_ruby_sdk/response.rb +9 -7
  30. data/lib/smartystreets_ruby_sdk/retry_sender.rb +26 -24
  31. data/lib/smartystreets_ruby_sdk/shared_credentials.rb +11 -9
  32. data/lib/smartystreets_ruby_sdk/signing_sender.rb +11 -9
  33. data/lib/smartystreets_ruby_sdk/sleeper.rb +1 -1
  34. data/lib/smartystreets_ruby_sdk/static_credentials.rb +11 -9
  35. data/lib/smartystreets_ruby_sdk/status_code_sender.rb +31 -29
  36. data/lib/smartystreets_ruby_sdk/url_prefix_sender.rb +11 -9
  37. data/lib/smartystreets_ruby_sdk/us_autocomplete.rb +3 -1
  38. data/lib/smartystreets_ruby_sdk/us_autocomplete/client.rb +47 -45
  39. data/lib/smartystreets_ruby_sdk/us_autocomplete/geolocation_type.rb +9 -5
  40. data/lib/smartystreets_ruby_sdk/us_autocomplete/lookup.rb +26 -24
  41. data/lib/smartystreets_ruby_sdk/us_autocomplete/suggestion.rb +11 -9
  42. data/lib/smartystreets_ruby_sdk/us_extract.rb +4 -2
  43. data/lib/smartystreets_ruby_sdk/us_extract/address.rb +18 -16
  44. data/lib/smartystreets_ruby_sdk/us_extract/client.rb +34 -32
  45. data/lib/smartystreets_ruby_sdk/us_extract/lookup.rb +16 -14
  46. data/lib/smartystreets_ruby_sdk/us_extract/metadata.rb +13 -11
  47. data/lib/smartystreets_ruby_sdk/us_extract/result.rb +13 -11
  48. data/lib/smartystreets_ruby_sdk/us_street.rb +4 -2
  49. data/lib/smartystreets_ruby_sdk/us_street/analysis.rb +19 -17
  50. data/lib/smartystreets_ruby_sdk/us_street/candidate.rb +19 -17
  51. data/lib/smartystreets_ruby_sdk/us_street/client.rb +51 -49
  52. data/lib/smartystreets_ruby_sdk/us_street/components.rb +32 -30
  53. data/lib/smartystreets_ruby_sdk/us_street/lookup.rb +27 -26
  54. data/lib/smartystreets_ruby_sdk/us_street/match_type.rb +9 -5
  55. data/lib/smartystreets_ruby_sdk/us_street/metadata.rb +26 -24
  56. data/lib/smartystreets_ruby_sdk/us_zipcode.rb +4 -2
  57. data/lib/smartystreets_ruby_sdk/us_zipcode/alternate_county.rb +12 -10
  58. data/lib/smartystreets_ruby_sdk/us_zipcode/city.rb +13 -11
  59. data/lib/smartystreets_ruby_sdk/us_zipcode/client.rb +46 -44
  60. data/lib/smartystreets_ruby_sdk/us_zipcode/lookup.rb +16 -13
  61. data/lib/smartystreets_ruby_sdk/us_zipcode/result.rb +33 -31
  62. data/lib/smartystreets_ruby_sdk/us_zipcode/zip_code.rb +24 -21
  63. data/lib/smartystreets_ruby_sdk/version.rb +2 -2
  64. data/smartystreets_ruby_sdk.gemspec +1 -1
  65. metadata +2 -2
data/Makefile CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/make -f
2
2
 
3
- SOURCE_VERSION := 3.1
3
+ SOURCE_VERSION := 4.0
4
4
 
5
5
  tests:
6
6
  ruby -Ilib -e 'ARGV.each { |f| require f }' ./test/smartystreets_ruby_sdk/test*.rb ./test/smartystreets_ruby_sdk/us_street/test*.rb ./test/smartystreets_ruby_sdk/us_zipcode/test*.rb
@@ -3,13 +3,13 @@ require 'smartystreets_ruby_sdk/client_builder'
3
3
  require 'smartystreets_ruby_sdk/international_street/lookup'
4
4
 
5
5
  class InternationalExample
6
- Lookup = InternationalStreet::Lookup
6
+ Lookup = SmartyStreets::InternationalStreet::Lookup
7
7
 
8
8
  def run
9
9
  auth_id = ENV['SMARTY_AUTH_ID'] # We recommend storing your keys in environment variables
10
10
  auth_token = ENV['SMARTY_AUTH_TOKEN']
11
- credentials = StaticCredentials.new(auth_id, auth_token)
12
- client = ClientBuilder.new(credentials).build_international_street_api_client
11
+ credentials = SmartyStreets::StaticCredentials.new(auth_id, auth_token)
12
+ client = SmartyStreets::ClientBuilder.new(credentials).build_international_street_api_client
13
13
 
14
14
  lookup = Lookup.new("Rua Padre Antonio D'Angelo 121 Casa Verde, Sao Paulo", 'Brazil')
15
15
  lookup.geocode = true # Must be expressly set to get latitude and longitude.
@@ -3,13 +3,13 @@ require 'smartystreets_ruby_sdk/client_builder'
3
3
  require 'smartystreets_ruby_sdk/us_autocomplete/lookup'
4
4
 
5
5
  class USAutocompleteExample
6
- Lookup = USAutocomplete::Lookup
6
+ Lookup = SmartyStreets::USAutocomplete::Lookup
7
7
 
8
8
  def run
9
9
  auth_id = ENV['SMARTY_AUTH_ID'] # We recommend storing your keys in environment variables
10
10
  auth_token = ENV['SMARTY_AUTH_TOKEN']
11
- credentials = StaticCredentials.new(auth_id, auth_token)
12
- client = ClientBuilder.new(credentials).build_us_autocomplete_api_client
11
+ credentials = SmartyStreets::StaticCredentials.new(auth_id, auth_token)
12
+ client = SmartyStreets::ClientBuilder.new(credentials).build_us_autocomplete_api_client
13
13
  lookup = Lookup.new('4770 Lincoln Ave O')
14
14
 
15
15
  client.send(lookup)
@@ -3,14 +3,14 @@ require 'smartystreets_ruby_sdk/client_builder'
3
3
  require 'smartystreets_ruby_sdk/us_extract/lookup'
4
4
 
5
5
  class USExtractExample
6
- Lookup = USExtract::Lookup
6
+ Lookup = SmartyStreets::USExtract::Lookup
7
7
 
8
8
  def run
9
9
  auth_id = ENV['SMARTY_AUTH_ID'] # We recommend storing your keys in environment variables
10
10
  auth_token = ENV['SMARTY_AUTH_TOKEN']
11
- credentials = StaticCredentials.new(auth_id, auth_token)
11
+ credentials = SmartyStreets::StaticCredentials.new(auth_id, auth_token)
12
12
 
13
- client = ClientBuilder.new(credentials).build_us_extract_api_client
13
+ client = SmartyStreets::ClientBuilder.new(credentials).build_us_extract_api_client
14
14
 
15
15
  text = "Here is some text.\r\nMy address is 3785 Las Vegs Av." \
16
16
  "\r\nLos Vegas, Nevada." \
@@ -1,17 +1,18 @@
1
1
  require 'smartystreets_ruby_sdk/static_credentials'
2
2
  require 'smartystreets_ruby_sdk/client_builder'
3
+ require 'smartystreets_ruby_sdk/batch'
3
4
  require 'smartystreets_ruby_sdk/us_street/lookup'
4
5
 
5
6
  class USStreetMultipleAddressExample
6
- Lookup = USStreet::Lookup
7
+ Lookup = SmartyStreets::USStreet::Lookup
7
8
 
8
9
  def run
9
10
  auth_id = ENV['SMARTY_AUTH_ID'] # We recommend storing your keys in environment variables.
10
11
  auth_token = ENV['SMARTY_AUTH_TOKEN']
11
- credentials = StaticCredentials.new(auth_id, auth_token)
12
+ credentials = SmartyStreets::StaticCredentials.new(auth_id, auth_token)
12
13
 
13
- client = ClientBuilder.new(credentials).build_us_street_api_client
14
- batch = Batch.new
14
+ client = SmartyStreets::ClientBuilder.new(credentials).build_us_street_api_client
15
+ batch = SmartyStreets::Batch.new
15
16
 
16
17
  batch.add(Lookup.new)
17
18
  batch[0].street = '1600 amphitheatre parkway'
@@ -29,7 +30,7 @@ class USStreetMultipleAddressExample
29
30
 
30
31
  begin
31
32
  client.send_batch(batch)
32
- rescue SmartyException => err
33
+ rescue SmartyError => err
33
34
  puts err
34
35
  return
35
36
  end
@@ -6,25 +6,25 @@ class USStreetSingleAddressExample
6
6
  def run
7
7
  auth_id = ENV['SMARTY_AUTH_ID'] # We recommend storing your keys in environment variables
8
8
  auth_token = ENV['SMARTY_AUTH_TOKEN']
9
- credentials = StaticCredentials.new(auth_id, auth_token)
9
+ credentials = SmartyStreets::StaticCredentials.new(auth_id, auth_token)
10
10
 
11
- client = ClientBuilder.new(credentials).build_us_street_api_client
11
+ client = SmartyStreets::ClientBuilder.new(credentials).build_us_street_api_client
12
12
 
13
- lookup = USStreet::Lookup.new
13
+ lookup = SmartyStreets::USStreet::Lookup.new
14
14
  lookup.street = '1600 Amphitheatre Pkwy'
15
15
  lookup.city = 'Mountain View'
16
16
  lookup.state = 'CA'
17
17
 
18
18
  begin
19
19
  client.send_lookup(lookup)
20
- rescue SmartyException => err
20
+ rescue SmartyStreets::SmartyError => err
21
21
  puts err
22
22
  return
23
23
  end
24
24
 
25
25
  result = lookup.result
26
26
 
27
- if result nil?
27
+ if result.nil?
28
28
  puts 'No candidates. This means the address is not valid.'
29
29
  return
30
30
  end
@@ -1,17 +1,18 @@
1
1
  require 'smartystreets_ruby_sdk/static_credentials'
2
2
  require 'smartystreets_ruby_sdk/client_builder'
3
+ require 'smartystreets_ruby_sdk/batch'
3
4
  require 'smartystreets_ruby_sdk/us_zipcode/lookup'
4
5
 
5
6
  class USZipcodeMultipleLookupExample
6
- Lookup = USZipcode::Lookup
7
+ Lookup = SmartyStreets::USZipcode::Lookup
7
8
 
8
9
  def run
9
10
  auth_id = ENV['SMARTY_AUTH_ID'] # We recommend storing your keys in environment variables
10
11
  auth_token = ENV['SMARTY_AUTH_TOKEN']
11
- credentials = StaticCredentials.new(auth_id, auth_token)
12
+ credentials = SmartyStreets::StaticCredentials.new(auth_id, auth_token)
12
13
 
13
- client = ClientBuilder.new(credentials).build_us_zipcode_api_client
14
- batch = Batch.new
14
+ client = SmartyStreets::ClientBuilder.new(credentials).build_us_zipcode_api_client
15
+ batch = SmartyStreets::Batch.new
15
16
 
16
17
  batch.add(Lookup.new)
17
18
  batch[0].zipcode = '12345' # A Lookup may have a ZIP Code, city and state, or city, state, and ZIP Code
@@ -25,7 +26,7 @@ class USZipcodeMultipleLookupExample
25
26
 
26
27
  begin
27
28
  client.send_batch(batch)
28
- rescue SmartyException => err
29
+ rescue SmartyError => err
29
30
  puts err
30
31
  return
31
32
  end
@@ -6,17 +6,17 @@ class UsZipcodeSingleLookupExample
6
6
  def run
7
7
  auth_id = ENV['SMARTY_AUTH_ID'] # We recommend storing your keys in environment variables.
8
8
  auth_token = ENV['SMARTY_AUTH_TOKEN']
9
- credentials = StaticCredentials.new(auth_id, auth_token)
9
+ credentials = SmartyStreets::StaticCredentials.new(auth_id, auth_token)
10
10
 
11
- client = ClientBuilder.new(credentials).build_us_zipcode_api_client
11
+ client = SmartyStreets::ClientBuilder.new(credentials).build_us_zipcode_api_client
12
12
 
13
- lookup = USZipcode::Lookup.new
13
+ lookup = SmartyStreets::USZipcode::Lookup.new
14
14
  lookup.city = 'Mountain View'
15
15
  lookup.state = 'California'
16
16
 
17
17
  begin
18
18
  client.send_lookup(lookup)
19
- rescue SmartyException => err
19
+ rescue SmartyError => err
20
20
  puts err
21
21
  return
22
22
  end
@@ -1,6 +1,28 @@
1
- require_relative 'smartystreets_ruby_sdk/version'
2
- require_relative 'smartystreets_ruby_sdk/logger'
3
- require_relative 'smartystreets_ruby_sdk/sleeper'
1
+ require 'smartystreets_ruby_sdk/version'
2
+ require 'smartystreets_ruby_sdk/logger'
3
+ require 'smartystreets_ruby_sdk/sleeper'
4
4
 
5
- module SmartystreetsRubySdk
5
+ require 'smartystreets_ruby_sdk/batch'
6
+ require 'smartystreets_ruby_sdk/client_builder'
7
+ require 'smartystreets_ruby_sdk/custom_header_sender'
8
+ require 'smartystreets_ruby_sdk/errors'
9
+ require 'smartystreets_ruby_sdk/exceptions'
10
+ require 'smartystreets_ruby_sdk/json_able'
11
+ require 'smartystreets_ruby_sdk/logger'
12
+ require 'smartystreets_ruby_sdk/native_sender'
13
+ require 'smartystreets_ruby_sdk/native_serializer'
14
+ require 'smartystreets_ruby_sdk/request'
15
+ require 'smartystreets_ruby_sdk/response'
16
+ require 'smartystreets_ruby_sdk/retry_sender'
17
+ require 'smartystreets_ruby_sdk/shared_credentials'
18
+ require 'smartystreets_ruby_sdk/signing_sender'
19
+ require 'smartystreets_ruby_sdk/static_credentials'
20
+ require 'smartystreets_ruby_sdk/status_code_sender'
21
+ require 'smartystreets_ruby_sdk/url_prefix_sender'
22
+
23
+ require 'smartystreets_ruby_sdk/us_extract'
24
+ require 'smartystreets_ruby_sdk/us_street'
25
+ require 'smartystreets_ruby_sdk/us_zipcode'
26
+
27
+ module SmartyStreets
6
28
  end
@@ -1,56 +1,59 @@
1
- class Batch
2
- include Enumerable
3
- MAX_BATCH_SIZE = 100
1
+ module SmartyStreets
2
+ # The Batch class is used to send up to 100 lookups at once
3
+ class Batch
4
+ include Enumerable
5
+ MAX_BATCH_SIZE = 100
4
6
 
5
- attr_reader :all_lookups, :named_lookups
7
+ attr_reader :all_lookups, :named_lookups
6
8
 
7
- def initialize
8
- @named_lookups = {}
9
- @all_lookups = []
10
- end
9
+ def initialize
10
+ @named_lookups = {}
11
+ @all_lookups = []
12
+ end
11
13
 
12
- def add(lookup)
13
- return false if full?
14
+ def add(lookup)
15
+ return false if full?
14
16
 
15
- @all_lookups.push(lookup)
17
+ @all_lookups.push(lookup)
16
18
 
17
- return true if lookup.input_id.nil?
19
+ return true if lookup.input_id.nil?
18
20
 
19
- @named_lookups[lookup.input_id] = lookup
20
- true
21
- end
21
+ @named_lookups[lookup.input_id] = lookup
22
+ true
23
+ end
22
24
 
23
- def clear
24
- @named_lookups.clear
25
- @all_lookups.clear
26
- end
25
+ def clear
26
+ @named_lookups.clear
27
+ @all_lookups.clear
28
+ end
27
29
 
28
- def full?
29
- size >= MAX_BATCH_SIZE
30
- end
30
+ def full?
31
+ size >= MAX_BATCH_SIZE
32
+ end
31
33
 
32
- def empty?
33
- size.zero?
34
- end
34
+ def empty?
35
+ size.zero?
36
+ end
35
37
 
36
- def size
37
- @all_lookups.length
38
- end
38
+ def size
39
+ @all_lookups.length
40
+ end
39
41
 
40
- def get_by_input_id(input_id)
41
- @named_lookups[input_id]
42
- end
42
+ def get_by_input_id(input_id)
43
+ @named_lookups[input_id]
44
+ end
43
45
 
44
- def get_by_index(index)
45
- @all_lookups[index]
46
- end
46
+ def get_by_index(index)
47
+ @all_lookups[index]
48
+ end
47
49
 
48
- def each(&block)
49
- @all_lookups.each(&block)
50
- end
50
+ def each(&block)
51
+ @all_lookups.each(&block)
52
+ end
51
53
 
52
- def [](index)
53
- @all_lookups[index]
54
- end
54
+ def [](index)
55
+ @all_lookups[index]
56
+ end
55
57
 
56
- end
58
+ end
59
+ end
@@ -12,117 +12,119 @@ require_relative 'us_extract/client'
12
12
  require_relative 'us_autocomplete/client'
13
13
  require_relative 'international_street/client'
14
14
 
15
- # The ClientBuilder class helps you build a client object for one of the supported SmartyStreets APIs.
16
- # You can use ClientBuilder's methods to customize settings like maximum retries or timeout duration.
17
- # These methods are chainable, so you can usually get set up with one line of code.
18
- class ClientBuilder
19
- INTERNATIONAL_STREET_API_URL = 'https://international-street.api.smartystreets.com/verify'.freeze
20
- US_AUTOCOMPLETE_API_URL = 'https://us-autocomplete.api.smartystreets.com/suggest'.freeze
21
- US_EXTRACT_API_URL = 'https://us-extract.api.smartystreets.com/'.freeze
22
- US_STREET_API_URL = 'https://us-street.api.smartystreets.com/street-address'.freeze
23
- US_ZIP_CODE_API_URL = 'https://us-zipcode.api.smartystreets.com/lookup'.freeze
24
-
25
- def initialize(signer)
26
- @signer = signer
27
- @serializer = NativeSerializer.new
28
- @http_sender = nil
29
- @max_retries = 5
30
- @max_timeout = 10_000
31
- @url_prefix = nil
32
- @proxy = nil
15
+ module SmartyStreets
16
+ # The ClientBuilder class helps you build a client object for one of the supported SmartyStreets APIs.
17
+ # You can use ClientBuilder's methods to customize settings like maximum retries or timeout duration.
18
+ # These methods are chainable, so you can usually get set up with one line of code.
19
+ class ClientBuilder
20
+ INTERNATIONAL_STREET_API_URL = 'https://international-street.api.smartystreets.com/verify'.freeze
21
+ US_AUTOCOMPLETE_API_URL = 'https://us-autocomplete.api.smartystreets.com/suggest'.freeze
22
+ US_EXTRACT_API_URL = 'https://us-extract.api.smartystreets.com/'.freeze
23
+ US_STREET_API_URL = 'https://us-street.api.smartystreets.com/street-address'.freeze
24
+ US_ZIP_CODE_API_URL = 'https://us-zipcode.api.smartystreets.com/lookup'.freeze
25
+
26
+ def initialize(signer)
27
+ @signer = signer
28
+ @serializer = NativeSerializer.new
29
+ @http_sender = nil
30
+ @max_retries = 5
31
+ @max_timeout = 10_000
32
+ @url_prefix = nil
33
+ @proxy = nil
34
+ end
35
+
36
+ # Sets the maximum number of times to retry sending the request to the API. (Default is 5)
37
+ #
38
+ # Returns self to accommodate method chaining.
39
+ def retry_at_most(max_retries)
40
+ @max_retries = max_retries
41
+ self
42
+ end
43
+
44
+ # The maximum time (in milliseconds) to wait for a connection, and also to wait for
45
+ # the response to be read. (Default is 10000)
46
+ #
47
+ # Returns self to accommodate method chaining.
48
+ def with_max_timeout(max_timeout)
49
+ @max_timeout = max_timeout
50
+ self
51
+ end
52
+
53
+ # Default is a series of nested senders. (See build_sender()
54
+ #
55
+ # Returns self to accommodate method chaining.
56
+ def with_sender(sender)
57
+ @http_sender = sender
58
+ self
59
+ end
60
+
61
+ # Changes the Serializer from the default.
62
+ #
63
+ # Returns self to accommodate method chaining.
64
+ def with_serializer(serializer)
65
+ @serializer = serializer
66
+ self
67
+ end
68
+
69
+ # This may be useful when using a local installation of the SmartyStreets APIs.
70
+ # base_url is a string that defaults to the URL for the API corresponding to the Client object being built.
71
+ #
72
+ # Returns self to accommodate method chaining.
73
+ def with_base_url(base_url)
74
+ @url_prefix = base_url
75
+ self
76
+ end
77
+
78
+ # Assigns a proxy through which all requests will be sent.
79
+ # proxy is a Proxy object from this module.
80
+ #
81
+ # Returns self to accommodate method chaining.
82
+ def with_proxy(proxy)
83
+ @proxy = proxy
84
+ self
85
+ end
86
+
87
+ def build_international_street_api_client
88
+ ensure_url_prefix_not_null(INTERNATIONAL_STREET_API_URL)
89
+ InternationalStreet::Client.new(build_sender, @serializer)
90
+ end
91
+
92
+ def build_us_autocomplete_api_client
93
+ ensure_url_prefix_not_null(US_AUTOCOMPLETE_API_URL)
94
+ USAutocomplete::Client.new(build_sender, @serializer)
95
+ end
96
+
97
+ def build_us_extract_api_client
98
+ ensure_url_prefix_not_null(US_EXTRACT_API_URL)
99
+ USExtract::Client.new(build_sender, @serializer)
100
+ end
101
+
102
+ def build_us_street_api_client
103
+ ensure_url_prefix_not_null(US_STREET_API_URL)
104
+ USStreet::Client.new(build_sender, @serializer)
105
+ end
106
+
107
+ def build_us_zipcode_api_client
108
+ ensure_url_prefix_not_null(US_ZIP_CODE_API_URL)
109
+ USZipcode::Client.new(build_sender, @serializer)
110
+ end
111
+
112
+ def build_sender
113
+ return @http_sender unless @http_sender.nil?
114
+
115
+ sender = NativeSender.new(@max_timeout, @proxy)
116
+
117
+ sender = StatusCodeSender.new(sender)
118
+
119
+ sender = SigningSender.new(@signer, sender) unless @signer.nil?
120
+
121
+ sender = RetrySender.new(@max_retries, sender, SmartyStreets::Sleeper.new,SmartyStreets::Logger.new) if @max_retries > 0
122
+
123
+ URLPrefixSender.new(@url_prefix, sender)
124
+ end
125
+
126
+ def ensure_url_prefix_not_null(url)
127
+ @url_prefix = url if @url_prefix.nil?
128
+ end
33
129
  end
34
-
35
- # Sets the maximum number of times to retry sending the request to the API. (Default is 5)
36
- #
37
- # Returns self to accommodate method chaining.
38
- def retry_at_most(max_retries)
39
- @max_retries = max_retries
40
- self
41
- end
42
-
43
- # The maximum time (in milliseconds) to wait for a connection, and also to wait for
44
- # the response to be read. (Default is 10000)
45
- #
46
- # Returns self to accommodate method chaining.
47
- def with_max_timeout(max_timeout)
48
- @max_timeout = max_timeout
49
- self
50
- end
51
-
52
- # Default is a series of nested senders. (See build_sender()
53
- #
54
- # Returns self to accommodate method chaining.
55
- def with_sender(sender)
56
- @http_sender = sender
57
- self
58
- end
59
-
60
- # Changes the Serializer from the default.
61
- #
62
- # Returns self to accommodate method chaining.
63
- def with_serializer(serializer)
64
- @serializer = serializer
65
- self
66
- end
67
-
68
- # This may be useful when using a local installation of the SmartyStreets APIs.
69
- # base_url is a string that defaults to the URL for the API corresponding to the Client object being built.
70
- #
71
- # Returns self to accommodate method chaining.
72
- def with_base_url(base_url)
73
- @url_prefix = base_url
74
- self
75
- end
76
-
77
- # Assigns a proxy through which all requests will be sent.
78
- # proxy is a Proxy object from this module.
79
- #
80
- # Returns self to accommodate method chaining.
81
- def with_proxy(proxy)
82
- @proxy = proxy
83
- self
84
- end
85
-
86
- def build_international_street_api_client
87
- ensure_url_prefix_not_null(INTERNATIONAL_STREET_API_URL)
88
- InternationalStreet::Client.new(build_sender, @serializer)
89
- end
90
-
91
- def build_us_autocomplete_api_client
92
- ensure_url_prefix_not_null(US_AUTOCOMPLETE_API_URL)
93
- USAutocomplete::Client.new(build_sender, @serializer)
94
- end
95
-
96
- def build_us_extract_api_client
97
- ensure_url_prefix_not_null(US_EXTRACT_API_URL)
98
- USExtract::Client.new(build_sender, @serializer)
99
- end
100
-
101
- def build_us_street_api_client
102
- ensure_url_prefix_not_null(US_STREET_API_URL)
103
- USStreet::Client.new(build_sender, @serializer)
104
- end
105
-
106
- def build_us_zipcode_api_client
107
- ensure_url_prefix_not_null(US_ZIP_CODE_API_URL)
108
- USZipcode::Client.new(build_sender, @serializer)
109
- end
110
-
111
- def build_sender
112
- return @http_sender unless @http_sender.nil?
113
-
114
- sender = NativeSender.new(@max_timeout, @proxy)
115
-
116
- sender = StatusCodeSender.new(sender)
117
-
118
- sender = SigningSender.new(@signer, sender) unless @signer.nil?
119
-
120
- sender = RetrySender.new(@max_retries, sender, SmartystreetsRubySdk::Sleeper.new, SmartystreetsRubySdk::Logger.new) if @max_retries > 0
121
-
122
- URLPrefixSender.new(@url_prefix, sender)
123
- end
124
-
125
- def ensure_url_prefix_not_null(url)
126
- @url_prefix = url if @url_prefix.nil?
127
- end
128
- end
130
+ end