Class: SmartyStreets::ClientBuilder
- Inherits:
-
Object
- Object
- SmartyStreets::ClientBuilder
- 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
- #build_international_autocomplete_api_client ⇒ Object
- #build_international_postal_code_api_client ⇒ Object
-
#build_international_street_api_client ⇒ Object
<editor-fold desc=“Build methods”>.
-
#build_sender ⇒ Object
</editor-fold>.
- #build_us_autocomplete_pro_api_client ⇒ Object
- #build_us_enrichment_api_client ⇒ Object
- #build_us_extract_api_client ⇒ Object
- #build_us_reverse_geo_api_client ⇒ Object
- #build_us_street_api_client ⇒ Object
- #build_us_zipcode_api_client ⇒ Object
- #ensure_url_prefix_not_null(url) ⇒ Object
-
#initialize(signer) ⇒ ClientBuilder
constructor
A new instance of ClientBuilder.
-
#retry_at_most(max_retries) ⇒ Object
Sets the maximum number of times to retry sending the request to the API.
-
#with_appended_header(key, value, separator) ⇒ Object
Appends the provided value to the existing header value using the specified separator, rather than adding a separate header value.
-
#with_base_url(base_url) ⇒ Object
This may be useful when using a local installation of the SmartyStreets APIs.
-
#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.
-
#with_custom_headers(header) ⇒ Object
Allows you to submit custom headers using a Hash.
-
#with_custom_query(key, value) ⇒ Object
Allows the caller to specify key and value pair that is added to the request query.
-
#with_debug ⇒ Object
Enables debug mode, which will print information about the HTTP request and response to $stdout.
-
#with_feature_component_analysis ⇒ Object
Adds to the request query to use the component analysis feature.
-
#with_feature_iana_time_zone ⇒ Object
with_feature_iana_time_zone turns on the IANA timezone feature for the request.
-
#with_licenses(licenses) ⇒ Object
Allows the caller to specify the subscription license (aka “track”) they wish to use.
-
#with_max_timeout(max_timeout) ⇒ Object
The maximum time (in seconds) to wait for the response to be read.
-
#with_proxy(host, port, username, password) ⇒ Object
Assigns a proxy through which all requests will be sent.
-
#with_sender(sender) ⇒ Object
Default is a series of nested senders.
-
#with_serializer(serializer) ⇒ Object
Changes the Serializer from the default.
Constructor Details
#initialize(signer) ⇒ ClientBuilder
Returns a new instance of ClientBuilder.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# 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 @append_headers = {} @licenses = %w() @debug = nil @queries = {} end |
Instance Method Details
#build_international_autocomplete_api_client ⇒ Object
178 179 180 181 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 178 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_client ⇒ Object
213 214 215 216 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 213 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_client ⇒ Object
<editor-fold desc=“Build methods”>
173 174 175 176 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 173 def build_international_street_api_client ensure_url_prefix_not_null(INTERNATIONAL_STREET_API_URL) InternationalStreet::Client.new(build_sender, @serializer) end |
#build_sender ⇒ Object
</editor-fold>
220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 220 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, @append_headers) 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_client ⇒ Object
183 184 185 186 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 183 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_client ⇒ Object
208 209 210 211 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 208 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_client ⇒ Object
188 189 190 191 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 188 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_client ⇒ Object
203 204 205 206 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 203 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_client ⇒ Object
193 194 195 196 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 193 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_client ⇒ Object
198 199 200 201 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 198 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
240 241 242 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 240 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.
56 57 58 59 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 56 def retry_at_most(max_retries) @max_retries = max_retries self end |
#with_appended_header(key, value, separator) ⇒ Object
Appends the provided value to the existing header value using the specified separator, rather than adding a separate header value. This is useful for single-value headers like User-Agent.
Returns self to accommodate method chaining.
117 118 119 120 121 122 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 117 def with_appended_header(key, value, separator) @header = {} if @header.nil? @append_headers[key] = separator @header[key] = (@header[key] || []).concat([value]) 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.
89 90 91 92 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 89 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.
144 145 146 147 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 144 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.
107 108 109 110 111 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 107 def with_custom_headers(header) @header = header @append_headers = {} 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.
135 136 137 138 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 135 def with_custom_query(key, value) @queries[key] = value self end |
#with_debug ⇒ Object
Enables debug mode, which will print information about the HTTP request and response to $stdout.
Returns self to accommodate method chaining.
166 167 168 169 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 166 def with_debug @debug = true self end |
#with_feature_component_analysis ⇒ Object
Adds to the request query to use the component analysis feature.
Returns self to accommodate method chaining.
152 153 154 155 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 152 def with_feature_component_analysis() self.with_custom_comma_separated_query("features", "component-analysis") self end |
#with_feature_iana_time_zone ⇒ Object
with_feature_iana_time_zone turns on the IANA timezone feature for the request.
158 159 160 161 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 158 def with_feature_iana_time_zone() self.with_custom_comma_separated_query("features", "iana-timezone") 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.
127 128 129 130 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 127 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.
64 65 66 67 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 64 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.
98 99 100 101 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 98 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.
72 73 74 75 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 72 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.
80 81 82 83 |
# File 'lib/smartystreets_ruby_sdk/client_builder.rb', line 80 def with_serializer(serializer) @serializer = serializer self end |