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_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_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
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_client ⇒ Object
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_client ⇒ Object
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_client ⇒ Object
<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_sender ⇒ Object
</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_client ⇒ Object
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_client ⇒ Object
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_client ⇒ Object
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_client ⇒ Object
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_client ⇒ Object
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_client ⇒ Object
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_debug ⇒ Object
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_analysis ⇒ Object
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 |