smartystreets_ruby_sdk 9.2.0 → 10.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5ac2a02e1e50748fdf51a0fd47191bffeb104354295065a59ec084db1206f360
4
- data.tar.gz: a1666efc5c56c5734eb78745797bd3eff3103c48d8b54df74cdfa72339c88335
3
+ metadata.gz: 6dfe1e04d687c3c2b33c116f12115c921092875761773196e70b05686642147d
4
+ data.tar.gz: c48c629d5c11195f679fe264b0fe4557e0fc78355e8f51b3ff62ebc463f27da8
5
5
  SHA512:
6
- metadata.gz: 87407facb073848e898f8e14c55c4a871fa3162c01947c1fc5520f89710c97ef7cf5fddc89964536b84b8d3363d35bac1cc46c01d072127bb69a27939d6d4b95
7
- data.tar.gz: 693a462beb2d887613ee0e7c016824e6dd3d8c0d863a984fdd5b74f1528811373db29846700d393dafbf8c52fb8f2e4e668a8731b7397102b8d5fe7307c6cb25
6
+ metadata.gz: 1fdef4159968f9cdfd3a6e67afefc68ffdddbf527bc4331f424410274b27812c1cfce78c18ca81e8a3ccc817d4b0db267513a116c55e182d43e71e8ffee694c8
7
+ data.tar.gz: 5fc398cc1452df089d87f0f13869b6ead3ebe387a9698d47881a064b498b8a10b992381e5ec26d95626e0dfdceb56ec47833f15e91601a60f6bbb9de513c4a6c
@@ -1,5 +1,6 @@
1
1
  require_relative '../request'
2
2
  require_relative 'candidate'
3
+ require_relative 'language_mode'
3
4
 
4
5
  module SmartyStreets
5
6
  module InternationalStreet
@@ -45,7 +46,7 @@ module SmartyStreets
45
46
  add_parameter(request, 'input_id', lookup.input_id)
46
47
  add_parameter(request, 'country', lookup.country)
47
48
  add_parameter(request, 'geocode', lookup.geocode.to_s)
48
- add_parameter(request, 'language', lookup.language)
49
+ add_parameter(request, 'language', normalized_language(lookup.language))
49
50
  add_parameter(request, 'freeform', lookup.freeform)
50
51
  add_parameter(request, 'address1', lookup.address1)
51
52
  add_parameter(request, 'address2', lookup.address2)
@@ -68,6 +69,12 @@ module SmartyStreets
68
69
  request.parameters[key] = value unless value.nil? or value.empty?
69
70
  end
70
71
 
72
+ def normalized_language(language)
73
+ return nil if language.nil?
74
+
75
+ LanguageMode.from_value(language).value
76
+ end
77
+
71
78
  def convert_candidates(raw_candidates)
72
79
  candidates = []
73
80
 
@@ -1,9 +1,26 @@
1
+ require_relative '../exceptions'
2
+
1
3
  module SmartyStreets
2
4
  module InternationalStreet
3
- module LanguageMode
4
- NATIVE = 'native'.freeze
5
+ # A closed set of valid Language values, the closest Ruby equivalent to an enum: a fixed set of frozen
6
+ # instances rather than an arbitrary string.
7
+ class LanguageMode < Data.define(:value)
8
+ NATIVE = new('native')
9
+ LATIN = new('latin')
10
+
11
+ ALL = [NATIVE, LATIN].freeze
12
+
13
+ # Resolves a LanguageMode instance or a raw value (eg. from user input or config) into a LanguageMode,
14
+ # matching 'native'/'latin' regardless of case.
15
+ def self.from_value(value)
16
+ return value if value.is_a?(LanguageMode)
17
+
18
+ match = ALL.find { |mode| mode.value.casecmp?(value.to_s) }
19
+ raise SmartyStreets::UnprocessableEntityError,
20
+ "invalid Language value; must be unset, 'native', or 'latin' (case-insensitive)" if match.nil?
5
21
 
6
- LATIN = 'latin'.freeze
22
+ match
23
+ end
7
24
  end
8
25
  end
9
26
  end
@@ -1,3 +1,5 @@
1
+ require_relative 'language_mode'
2
+
1
3
  module SmartyStreets
2
4
  module InternationalStreet
3
5
  # In addition to holding all of the input data for this lookup, this class also will contain the
@@ -73,6 +75,7 @@ module SmartyStreets
73
75
  def ensure_enough_info
74
76
  raise UnprocessableEntityError, 'Country field is required.' if field_is_missing(@country)
75
77
  raise UnprocessableEntityError, 'Either freeform or address1 is required.' if field_is_missing(@freeform) && field_is_missing(@address1)
78
+ LanguageMode.from_value(@language) unless @language.nil?
76
79
  end
77
80
  end
78
81
  end
@@ -1,3 +1,3 @@
1
1
  module SmartyStreets
2
- VERSION = '9.2.0' # DO NOT EDIT (this is updated by a build job when a new release is published)
2
+ VERSION = '10.0.0' # DO NOT EDIT (this is updated by a build job when a new release is published)
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smartystreets_ruby_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.2.0
4
+ version: 10.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SmartyStreets SDK Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-07-08 00:00:00.000000000 Z
11
+ date: 2026-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler