atlas_engine 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2236db9cf72e66e7bec983fec0ce919b31e1a795e6509ac65e1f914e8cda1c2b
4
- data.tar.gz: c4bb6b2c1c8c927abbdf22d66d7a198052ab772f9243ffbd4c02bccced29b4ea
3
+ metadata.gz: dde673ac6063402f30381011574f018aee19ac9d6e9b961c04252cf76cfd49e5
4
+ data.tar.gz: b5c0adce91a39d744004b902e2b3a4a13544a50af756bb1ace003e391b0d3643
5
5
  SHA512:
6
- metadata.gz: a1ccff91cd2b8026fd568ba9aced9688741bf1fd107fd180a83447e9d62ce20750d1ba8d14efe690ab22db6d239dfc1af51edda770c00de31cf07bfc210dc8cf
7
- data.tar.gz: 9ee3408a1926463cf05cef4ba3b835e71fb8f490b61033154ac47dc586e2eb8b20fa971c9ca8c23859cec7fd4f7f8e81370f506fdba16e081b6299595a517f05
6
+ metadata.gz: dfe8b1e2a4ebe506f55b62a541b57ab22c0cca456ed4ef071007d43e106d0ed0b904389fd22a0424661ca76cd2f7bdc4ed5887866663eaee361f9afd5e7d3ac0
7
+ data.tar.gz: a632f397142d60a6da29ae440ed686ff920cb15e62349c3abb0ef9a3ccaddd975936870d55aee45867851337f10d46982f6740bbcf3379f9d74aeeed15369577
data/README.md CHANGED
@@ -7,6 +7,7 @@ Atlas Engine is a rails engine that provides a global end-to-end address validat
7
7
  * [Local Development Installation](#local-development-installation)
8
8
  * [Address Data Ingestion](#address-data-ingestion)
9
9
  * [Elasticsearch Matching Strategy](#elasticsearch-matching-strategy)
10
+ * [Hosted Solution](#hosted-solution)
10
11
 
11
12
  ## Address Validation API
12
13
 
@@ -303,23 +304,24 @@ At the moment, `atlas_engine` supports advanced address validation for the follo
303
304
 
304
305
  | Country/territory | Two-letter code | Locales | Street | City | Postal Code | Province/State |
305
306
  |-------------------|-----------------|----------|--------|------|-------------|----------------|
306
- | Australia | AU | | | x | x | x |
307
- | Austria | AT | | | x | x | x |
308
- | Belgium | BE | fr,nl,de | | x | x | |
307
+ | Australia | AU | | x | x | x | x |
308
+ | Austria | AT | | x | x | x | x |
309
+ | Belgium | BE | fr,nl,de | x | x | x | |
309
310
  | Bermuda | BM | | | x | x | x |
310
311
  | Czechia | CZ | | | x | x | |
311
312
  | Denmark | DK | | | x | x | |
312
313
  | Faroe Islands | FO | | | x | x | |
313
- | France | FR | | | x | x | |
314
+ | France | FR | | x | x | x | |
315
+ | Gurnsey | GG | | | x | x | |
314
316
  | Italy | IT | | | | x | |
315
317
  | Liechtenstein | LI | | | x | x | x |
316
318
  | Luxembourg | LU | fr,lb | | x | x | |
317
- | Netherlands | NL | nl | | x | x | x |
318
- | Poland | PL | | | x | x | x |
319
+ | Netherlands | NL | nl | x | x | x | x |
320
+ | Poland | PL | | x | x | x | x |
319
321
  | Portugal | PT | | | x | x | x |
320
322
  | Slovenia | SI | | | x | x | x |
321
323
  | South Korea | KR | | | x | x | x |
322
- | Switzerland | CH | de,fr,it | | x | x | |
324
+ | Switzerland | CH | de,fr,it | x | x | x | |
323
325
  | United States | US | en | x | x | x | x |
324
326
 
325
327
  ### Downloading and indexing instructions
@@ -653,3 +655,19 @@ will produce the response:
653
655
  ```
654
656
 
655
657
  This response has no concerns or suggestions, and the input address is therefore considered to be valid.
658
+
659
+ ## Hosted Solution
660
+
661
+ If you wish to use the Shopify hosted version of the `atlas_engine` codebase in your applications, you will need to [register for an api key](https://address-validation.shopify.dev/#request-api-key) and agree to our [terms and conditions](https://address-validation.shopify.dev/terms-of-service).
662
+
663
+ Once you have successfully redeemed an api key, you will be able to access the `/graphql` endpoint, which can be queried using this example curl request:
664
+
665
+ ```
666
+ curl --request POST \
667
+ --url https://atlas-validation.shopifyapps.com/graphql \
668
+ --header 'Authorization: Bearer {your-api-key}' \
669
+ --header 'Content-Type: application/json' \
670
+ --data '{"query":"query validation { validation(address: { address1: \"233 S Wacker Dr\" address2: \"\" city: \"Chicago\" countryCode: US provinceCode: \"IL\" zip: \"60606\" } locale: \"EN\" ) { validationScope concerns { code fieldNames suggestionIds type typeLevel message } suggestions { id address1 address2 city province provinceCode zip } }}","operationName":"validation"}'
671
+ ```
672
+
673
+ Any updates to the `atlas_engine` codebase that are merged into our `main` branch will be deployed to our hosted solution as well.
@@ -9,7 +9,7 @@ ingestion:
9
9
  data_mapper: AtlasEngine::AddressValidation::Es::DataMappers::DecompoundingDataMapper
10
10
  validation:
11
11
  enabled: true
12
- default_matching_strategy: es
12
+ default_matching_strategy: es_street
13
13
  has_provinces: true
14
14
  address_parser: AtlasEngine::At::ValidationTranscriber::AddressParser
15
15
  normalized_components:
@@ -8,6 +8,6 @@ ingestion:
8
8
  validation:
9
9
  address_parser: AtlasEngine::Au::ValidationTranscriber::AddressParser
10
10
  enabled: true
11
- default_matching_strategy: es
11
+ default_matching_strategy: es_street
12
12
  open_address:
13
13
  filter: AtlasEngine::Au::AddressImporter::OpenAddress::Filter
@@ -5,9 +5,9 @@ ingestion:
5
5
  max_zip_edge_ngram: "4"
6
6
  validation:
7
7
  enabled: true
8
- default_matching_strategy: local
8
+ default_matching_strategy: es_street
9
9
  address_parser: AtlasEngine::Be::ValidationTranscriber::AddressParser
10
- has_provinces: false
10
+ has_provinces: false
11
11
  index_locales:
12
12
  - fr
13
13
  - nl
@@ -1,7 +1,7 @@
1
1
  id: CH
2
2
  validation:
3
3
  enabled: true
4
- default_matching_strategy: local
4
+ default_matching_strategy: es_street
5
5
  has_provinces: false
6
6
  address_parser: AtlasEngine::De::ValidationTranscriber::AddressParser
7
7
  index_locales:
@@ -10,6 +10,6 @@ ingestion:
10
10
  validation:
11
11
  address_parser: AtlasEngine::Fr::ValidationTranscriber::AddressParser
12
12
  enabled: true
13
- default_matching_strategy: es
13
+ default_matching_strategy: es_street
14
14
  has_provinces: false
15
15
  zip_prefix_length: 3
@@ -7,7 +7,7 @@ ingestion:
7
7
  validation:
8
8
  enabled: true
9
9
  has_provinces: true
10
- default_matching_strategy: es
10
+ default_matching_strategy: es_street
11
11
  normalized_components:
12
12
  - street_decompounded
13
13
  address_parser: AtlasEngine::Nl::ValidationTranscriber::AddressParser
@@ -7,7 +7,7 @@ ingestion:
7
7
  validation:
8
8
  address_parser: AtlasEngine::Pl::ValidationTranscriber::AddressParser
9
9
  enabled: true
10
- default_matching_strategy: es
10
+ default_matching_strategy: es_street
11
11
  exclusions:
12
12
  city:
13
13
  - AtlasEngine::Pl::AddressValidation::Exclusions::RuralAddress
@@ -9,6 +9,7 @@ ingestion:
9
9
  validation:
10
10
  enabled: true
11
11
  default_matching_strategy: es_street
12
+ unmatched_components_suggestion_threshold: 1
12
13
  address_parser: AtlasEngine::ValidationTranscriber::AddressParserNorthAmerica
13
14
  open_address:
14
15
  filter: AtlasEngine::Us::AddressImporter::OpenAddress::Filter
@@ -6,8 +6,12 @@ input AddressInput {
6
6
  address2: String
7
7
  city: String
8
8
  countryCode: ValidationSupportedCountry
9
+ line2: String
10
+ neighborhood: String
9
11
  phone: String
10
12
  provinceCode: String
13
+ streetName: String
14
+ streetNumber: String
11
15
  zip: String
12
16
  }
13
17
 
@@ -12,7 +12,11 @@ module AtlasEngine
12
12
  description "Address fields used to fulfill a validation request"
13
13
 
14
14
  argument :address1, String, required: false
15
+ argument :street_name, String, required: false
16
+ argument :street_number, String, required: false
15
17
  argument :address2, String, required: false
18
+ argument :line2, String, required: false
19
+ argument :neighborhood, String, required: false
16
20
  argument :city, String, required: false
17
21
  argument :country_code, ValidationSupportedCountry, required: false
18
22
  argument :province_code, String, required: false
@@ -22,7 +22,11 @@ module AtlasEngine
22
22
  sig do
23
23
  params(
24
24
  address1: String,
25
+ street_name: String,
26
+ street_number: String,
25
27
  address2: String,
28
+ line2: String,
29
+ neighborhood: String,
26
30
  city: String,
27
31
  province_code: String,
28
32
  zip: String,
@@ -30,10 +34,15 @@ module AtlasEngine
30
34
  phone: String,
31
35
  ).returns(AddressValidation::Address)
32
36
  end
33
- def build_address(address1: "", address2: "", city: "", province_code: "", zip: "", country_code: "", phone: "")
37
+ def build_address(address1: "", street_name: "", street_number: "", address2: "", line2: "", neighborhood: "",
38
+ city: "", province_code: "", zip: "", country_code: "", phone: "")
34
39
  AddressValidation::Address.new(
35
40
  address1: address1,
41
+ street_name: street_name,
42
+ street_number: street_number,
36
43
  address2: address2,
44
+ line2: line2,
45
+ neighborhood: neighborhood,
37
46
  city: city,
38
47
  province_code: province_code,
39
48
  zip: zip,
@@ -164,7 +164,7 @@ module AtlasEngine
164
164
 
165
165
  sig { params(value: String).returns(T::Boolean) }
166
166
  def include_fractions?(value)
167
- %r{^([0-9]+ )?([0-9]+/[0-9]+)?$}.match?(value)
167
+ %r{^([0-9]+ )?([0-9]+/[1-9][0-9]*)?$}.match?(value)
168
168
  end
169
169
 
170
170
  sig { params(str: String).returns(String) }
@@ -13,9 +13,21 @@ module AtlasEngine
13
13
  sig { abstract.returns(ComponentType) }
14
14
  def address1; end
15
15
 
16
+ sig { returns(ComponentType) }
17
+ def street_name; end
18
+
19
+ sig { returns(ComponentType) }
20
+ def street_number; end
21
+
16
22
  sig { abstract.returns(ComponentType) }
17
23
  def address2; end
18
24
 
25
+ sig { returns(ComponentType) }
26
+ def line2; end
27
+
28
+ sig { returns(ComponentType) }
29
+ def neighborhood; end
30
+
19
31
  sig { abstract.returns(ComponentType) }
20
32
  def city; end
21
33
 
@@ -13,7 +13,11 @@ module AtlasEngine
13
13
  AddressInput = T.type_alias { Types::AddressValidation::AddressInput }
14
14
 
15
15
  const :address1, ComponentType
16
+ const :street_name, ComponentType
17
+ const :street_number, ComponentType
16
18
  const :address2, ComponentType
19
+ const :line2, ComponentType
20
+ const :neighborhood, ComponentType
17
21
  const :city, ComponentType
18
22
  const :province_code, ComponentType
19
23
  const :phone, ComponentType
@@ -33,7 +37,11 @@ module AtlasEngine
33
37
  def from_address(address:)
34
38
  new(
35
39
  address1: address.address1,
40
+ street_name: address.street_name,
41
+ street_number: address.street_number,
36
42
  address2: address.address2,
43
+ line2: address.line2,
44
+ neighborhood: address.neighborhood,
37
45
  city: address.city,
38
46
  country_code: address.country_code,
39
47
  province_code: address.province_code,
@@ -9,9 +9,21 @@ module AtlasEngine
9
9
  sig { returns(String) }
10
10
  attr_reader :address1
11
11
 
12
+ sig { returns(String) }
13
+ attr_reader :street_name
14
+
15
+ sig { returns(String) }
16
+ attr_reader :street_number
17
+
12
18
  sig { returns(String) }
13
19
  attr_reader :address2
14
20
 
21
+ sig { returns(String) }
22
+ attr_reader :line2
23
+
24
+ sig { returns(String) }
25
+ attr_reader :neighborhood
26
+
15
27
  sig { returns(String) }
16
28
  attr_reader :city
17
29
 
@@ -73,7 +85,11 @@ module AtlasEngine
73
85
  timestamp: Time,
74
86
  origin: String,
75
87
  address1: String,
88
+ street_name: String,
89
+ street_number: String,
76
90
  address2: String,
91
+ line2: String,
92
+ neighborhood: String,
77
93
  city: String,
78
94
  province_code: String,
79
95
  country_code: String,
@@ -87,7 +103,11 @@ module AtlasEngine
87
103
  timestamp: Time.zone.now,
88
104
  origin: "",
89
105
  address1: "",
106
+ street_name: "",
107
+ street_number: "",
90
108
  address2: "",
109
+ line2: "",
110
+ neighborhood: "",
91
111
  city: "",
92
112
  province_code: "",
93
113
  country_code: "",
@@ -100,7 +120,11 @@ module AtlasEngine
100
120
  @timestamp = timestamp
101
121
  @origin = origin
102
122
  @address1 = address1
123
+ @street_name = street_name
124
+ @street_number = street_number
103
125
  @address2 = address2
126
+ @line2 = line2
127
+ @neighborhood = neighborhood
104
128
  @city = city
105
129
  @province_code = province_code
106
130
  @country_code = country_code
@@ -114,7 +138,11 @@ module AtlasEngine
114
138
  def address_attributes
115
139
  {
116
140
  address1: address1,
141
+ street_name: street_name,
142
+ street_number: street_number,
117
143
  address2: address2,
144
+ line2: line2,
145
+ neighborhood: neighborhood,
118
146
  city: city,
119
147
  province_code: province_code,
120
148
  zip: zip,
@@ -12,7 +12,11 @@ module AtlasEngine
12
12
  params(
13
13
  address: {
14
14
  address1: T.nilable(String),
15
+ street_name: T.nilable(String),
16
+ street_number: T.nilable(String),
15
17
  address2: T.nilable(String),
18
+ line2: T.nilable(String),
19
+ neighborhood: T.nilable(String),
16
20
  city: T.nilable(String),
17
21
  province_code: T.nilable(String),
18
22
  country_code: T.nilable(String),
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module AtlasEngine
5
- VERSION = "1.0.0"
5
+ VERSION = "1.1.0"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atlas_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-28 00:00:00.000000000 Z
11
+ date: 2024-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: annex_29