smartystreets_ruby_sdk 3.1.0 → 4.0.0

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