Class: SmartyStreets::ClientBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/smartystreets_ruby_sdk/client_builder.rb

Overview

The ClientBuilder class helps you build a client object for one of the supported SmartyStreets APIs. You can use ClientBuilder’s methods to customize settings like maximum retries or timeout duration. These methods are chainable, so you can usually get set up with one line of code.

Constant Summary collapse

INTERNATIONAL_STREET_API_URL =
'https://international-street.api.smarty.com/verify'.freeze
INTERNATIONAL_AUTOCOMPLETE_API_URL =
"https://international-autocomplete.api.smarty.com/v2/lookup".freeze
US_AUTOCOMPLETE_PRO_API_URL =
'https://us-autocomplete-pro.api.smarty.com/lookup'.freeze
US_EXTRACT_API_URL =
'https://us-extract.api.smarty.com/'.freeze
US_STREET_API_URL =
'https://us-street.api.smarty.com/street-address'.freeze
US_ZIP_CODE_API_URL =
'https://us-zipcode.api.smarty.com/lookup'.freeze
US_REVERSE_GEO_API_URL =
'https://us-reverse-geo.api.smarty.com/lookup'.freeze
US_ENRICHMENT_API_URL =
'https://us-enrichment.api.smarty.com/lookup'.freeze
INTERNATIONAL_POSTAL_CODE_API_URL =
'https://international-postal-code.api.smarty.com/lookup'.freeze

Instance Method Summary collapse

Constructor Details

#initialize(signer) ⇒ ClientBuilder



38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 38

def initialize(signer)
  @signer = signer
  @serializer = NativeSerializer.new
  @http_sender = nil
  @max_retries = 5
  @max_timeout = 10
  @url_prefix = nil
  @proxy = nil
  @header = nil
  @licenses = %w()
  @debug = nil
  @queries = {}
end

Instance Method Details

#build_international_autocomplete_api_clientObject



159
160
161
162
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 159

def build_international_autocomplete_api_client
  ensure_url_prefix_not_null(INTERNATIONAL_AUTOCOMPLETE_API_URL)
  InternationalAutocomplete::Client.new(build_sender, @serializer)
end

#build_international_postal_code_api_clientObject



194
195
196
197
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 194

def build_international_postal_code_api_client
  ensure_url_prefix_not_null(INTERNATIONAL_POSTAL_CODE_API_URL)
  InternationalPostalCode::Client.new(build_sender, @serializer)
end

#build_international_street_api_clientObject

<editor-fold desc=“Build methods”>



154
155
156
157
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 154

def build_international_street_api_client
  ensure_url_prefix_not_null(INTERNATIONAL_STREET_API_URL)
  InternationalStreet::Client.new(build_sender, @serializer)
end

#build_senderObject

</editor-fold>



201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 201

def build_sender
  return @http_sender unless @http_sender.nil?

  sender = NativeSender.new(@max_timeout, @proxy, @debug)

  sender = StatusCodeSender.new(sender)

  sender = CustomHeaderSender.new(sender, @header) unless @header.nil?

  sender = SigningSender.new(@signer, sender) unless @signer.nil?

  sender = RetrySender.new(@max_retries, sender, SmartyStreets::Sleeper.new,SmartyStreets::Logger.new) if @max_retries > 0

  sender = LicenseSender.new(sender, @licenses)

  sender = CustomQuerySender.new(sender, @queries)

  URLPrefixSender.new(@url_prefix, sender)
end

#build_us_autocomplete_pro_api_clientObject



164
165
166
167
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 164

def build_us_autocomplete_pro_api_client
  ensure_url_prefix_not_null(US_AUTOCOMPLETE_PRO_API_URL)
  USAutocompletePro::Client.new(build_sender, @serializer)
end

#build_us_enrichment_api_clientObject



189
190
191
192
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 189

def build_us_enrichment_api_client
  ensure_url_prefix_not_null(US_ENRICHMENT_API_URL)
  USEnrichment::Client.new(build_sender, @serializer)
end

#build_us_extract_api_clientObject



169
170
171
172
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 169

def build_us_extract_api_client
  ensure_url_prefix_not_null(US_EXTRACT_API_URL)
  USExtract::Client.new(build_sender, @serializer)
end

#build_us_reverse_geo_api_clientObject



184
185
186
187
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 184

def build_us_reverse_geo_api_client
  ensure_url_prefix_not_null(US_REVERSE_GEO_API_URL)
  USReverseGeo::Client.new(build_sender, @serializer)
end

#build_us_street_api_clientObject



174
175
176
177
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 174

def build_us_street_api_client
  ensure_url_prefix_not_null(US_STREET_API_URL)
  USStreet::Client.new(build_sender, @serializer)
end

#build_us_zipcode_api_clientObject



179
180
181
182
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 179

def build_us_zipcode_api_client
  ensure_url_prefix_not_null(US_ZIP_CODE_API_URL)
  USZipcode::Client.new(build_sender, @serializer)
end

#ensure_url_prefix_not_null(url) ⇒ Object



221
222
223
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 221

def ensure_url_prefix_not_null(url)
  @url_prefix = url if @url_prefix.nil?
end

#retry_at_most(max_retries) ⇒ Object

Sets the maximum number of times to retry sending the request to the API. (Default is 5)

Returns self to accommodate method chaining.



55
56
57
58
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 55

def retry_at_most(max_retries)
  @max_retries = max_retries
  self
end

#with_base_url(base_url) ⇒ Object

This may be useful when using a local installation of the SmartyStreets APIs. base_url is a string that defaults to the URL for the API corresponding to the Client object being built.

Returns self to accommodate method chaining.



88
89
90
91
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 88

def with_base_url(base_url)
  @url_prefix = base_url
  self
end

#with_custom_comma_separated_query(key, value) ⇒ Object

Allows the caller to specify key and value pair and appends the value to the current value associated with the key, separated by a comma.

Returns self to accommodate method chaining.



131
132
133
134
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 131

def with_custom_comma_separated_query(key, value)
  @queries[key] = [@queries[key], value].compact.join(',')
  self
end

#with_custom_headers(header) ⇒ Object

Allows you to submit custom headers using a Hash. headers is a Hash object.

Returns self to accommodate method chaining.



106
107
108
109
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 106

def with_custom_headers(header)
  @header = header
  self
end

#with_custom_query(key, value) ⇒ Object

Allows the caller to specify key and value pair that is added to the request query.

Returns self to accommodate method chaining.



122
123
124
125
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 122

def with_custom_query(key, value)
  @queries[key] = value
  self
end

#with_debugObject

Enables debug mode, which will print information about the HTTP request and response to $stdout.

Returns self to accommodate method chaining.



147
148
149
150
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 147

def with_debug
  @debug = true
  self
end

#with_feature_component_analysisObject

Adds to the request query to use the component analysis feature.

Returns self to accommodate method chaining.



139
140
141
142
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 139

def with_feature_component_analysis()
  self.with_custom_comma_separated_query("features", "component-analysis")
  self
end

#with_licenses(licenses) ⇒ Object

Allows the caller to specify the subscription license (aka “track”) they wish to use.

Returns self to accommodate method chaining.



114
115
116
117
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 114

def with_licenses(licenses)
  @licenses.concat licenses
  self
end

#with_max_timeout(max_timeout) ⇒ Object

The maximum time (in seconds) to wait for the response to be read. (Default is 10)

Returns self to accommodate method chaining.



63
64
65
66
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 63

def with_max_timeout(max_timeout)
  @max_timeout = max_timeout
  self
end

#with_proxy(host, port, username, password) ⇒ Object

Assigns a proxy through which all requests will be sent. proxy is a Proxy object from this module.

Returns self to accommodate method chaining.



97
98
99
100
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 97

def with_proxy(host, port, username, password)
  @proxy = SmartyStreets::Proxy.new(host, port, username, password)
  self
end

#with_sender(sender) ⇒ Object

Default is a series of nested senders. (See build_sender()

Returns self to accommodate method chaining.



71
72
73
74
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 71

def with_sender(sender)
  @http_sender = sender
  self
end

#with_serializer(serializer) ⇒ Object

Changes the Serializer from the default.

Returns self to accommodate method chaining.



79
80
81
82
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 79

def with_serializer(serializer)
  @serializer = serializer
  self
end