valvat 1.1.2 → 1.1.3
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.github/workflows/ruby.yml +8 -2
- data/CHANGES.md +9 -3
- data/README.md +2 -2
- data/certs/yolk.pem +25 -24
- data/gemfiles/activemodel-7 +7 -0
- data/lib/active_model/validations/valvat_validator.rb +1 -1
- data/lib/valvat/error.rb +6 -3
- data/lib/valvat/lookup/fault.rb +15 -8
- data/lib/valvat/lookup/request.rb +1 -1
- data/lib/valvat/utils.rb +1 -1
- data/lib/valvat/version.rb +1 -1
- data/spec/valvat/lookup/request_spec.rb +13 -0
- data/spec/valvat/lookup_spec.rb +34 -0
- data.tar.gz.sig +1 -3
- metadata +28 -27
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 92de431f5777b0b5115169e30bac0233ce3d9047c1bc74b9d42fe02acb2b460d
|
|
4
|
+
data.tar.gz: 0146a80725a3dce432002a456b8e9f10e3a65ee5d36b27dac5c6d646dc48fa70
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b6d08a4d98163bd195d861c83a837042e93bfebe13606c0fce10a703bf702296eb406f75d39349e46e7078289b74d2779f511b3d3a77a49e4d4fb5e585fb01cc
|
|
7
|
+
data.tar.gz: c2190c0f729188281e4894fb1d7e2b4b771171215da07329b0fc92fcda8806f5ac8fe3d7d1eb2d2c1f1e941a06b3d3c22a975369d5617589702a86d727166d4b
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/.github/workflows/ruby.yml
CHANGED
|
@@ -17,11 +17,17 @@ jobs:
|
|
|
17
17
|
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}
|
|
18
18
|
strategy:
|
|
19
19
|
matrix:
|
|
20
|
-
ruby-version: ['2.
|
|
21
|
-
gemfile: [ 'standalone', 'activemodel-5', 'activemodel-6' ]
|
|
20
|
+
ruby-version: ['2.6', '2.7', '3.0', '3.1', 'truffleruby-head', 'jruby-9.3.2.0']
|
|
21
|
+
gemfile: [ 'standalone', 'activemodel-5', 'activemodel-6', 'activemodel-7' ]
|
|
22
22
|
exclude:
|
|
23
23
|
- ruby-version: '3.0'
|
|
24
24
|
gemfile: 'activemodel-5'
|
|
25
|
+
- ruby-version: '3.1'
|
|
26
|
+
gemfile: 'activemodel-5'
|
|
27
|
+
- ruby-version: '2.6'
|
|
28
|
+
gemfile: 'activemodel-7'
|
|
29
|
+
- ruby-version: 'jruby-9.3.2.0'
|
|
30
|
+
gemfile: 'activemodel-7'
|
|
25
31
|
|
|
26
32
|
steps:
|
|
27
33
|
- uses: actions/checkout@v2
|
data/CHANGES.md
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
|
|
2
2
|
### dev
|
|
3
3
|
|
|
4
|
-
[full changelog](http://github.com/yolk/valvat/compare/v1.1.
|
|
4
|
+
[full changelog](http://github.com/yolk/valvat/compare/v1.1.3...master)
|
|
5
5
|
|
|
6
|
-
### 1.1.
|
|
6
|
+
### 1.1.3 / 2022-01-26
|
|
7
|
+
|
|
8
|
+
[full changelog](http://github.com/yolk/valvat/compare/v1.1.2...v1.1.3)
|
|
9
|
+
|
|
10
|
+
* Handle Savon::HTTPError and Savon::UnknownOperationError as ViesError and throw Valvat::HTTPError and Valvat::OperationUnknown instead.
|
|
11
|
+
|
|
12
|
+
### 1.1.2 / 2021-10-29
|
|
7
13
|
|
|
8
14
|
[full changelog](http://github.com/yolk/valvat/compare/v1.1.1...v1.1.2)
|
|
9
15
|
|
|
10
16
|
* Fixed SOAPAction error (#105) (by [Ľubo ](https://github.com/lubosch))
|
|
11
17
|
|
|
12
|
-
### 1.1.
|
|
18
|
+
### 1.1.1 / 2021-07-15
|
|
13
19
|
|
|
14
20
|
[full changelog](http://github.com/yolk/valvat/compare/v1.1.0...v1.1.1)
|
|
15
21
|
|
data/README.md
CHANGED
|
@@ -20,7 +20,7 @@ Northern Ireland received its own VAT number prefix - XI which is supported by V
|
|
|
20
20
|
* I18n locales for language specific error messages in English, German, French, Spanish, Italian, Portuguese, Polish, Swedish, Dutch, Danish, Czech, Slovakian, Hungarian, Bulgarian, Romanian, Latvian, Catalan, Norwegian, and Finnish.
|
|
21
21
|
* *Experimental* checksum verification
|
|
22
22
|
|
|
23
|
-
valvat is tested and works with ruby MRI 2.
|
|
23
|
+
valvat is tested and works with ruby MRI 2.6/2.7/3.0/3.1, jruby, truffleruby-head and ActiveModel 5/6/7. If you need support for ruby down to 1.9.3 and ActiveModel 3 and 4 use [v1.0.1](https://github.com/yolk/valvat/tree/v1.0.1).
|
|
24
24
|
|
|
25
25
|
## Installation
|
|
26
26
|
|
|
@@ -258,7 +258,7 @@ https://github.com/yolk/valvat/graphs/contributors
|
|
|
258
258
|
|
|
259
259
|
## BlaBla
|
|
260
260
|
|
|
261
|
-
Copyright (c) 2011-
|
|
261
|
+
Copyright (c) 2011-2022 Yolk Sebastian Munz & Julia Soergel GbR
|
|
262
262
|
|
|
263
263
|
Beyond that, the implementation is licensed under the MIT License.
|
|
264
264
|
|
data/certs/yolk.pem
CHANGED
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
2
|
+
MIIEZDCCAsygAwIBAgIBATANBgkqhkiG9w0BAQsFADA8MRIwEAYDVQQDDAlzZWJh
|
|
3
|
+
c3RpYW4xEjAQBgoJkiaJk/IsZAEZFgJ5bzESMBAGCgmSJomT8ixkARkWAmxrMB4X
|
|
4
|
+
DTIyMDEyNjE4MjIxNFoXDTIzMDEyNjE4MjIxNFowPDESMBAGA1UEAwwJc2ViYXN0
|
|
5
|
+
aWFuMRIwEAYKCZImiZPyLGQBGRYCeW8xEjAQBgoJkiaJk/IsZAEZFgJsazCCAaIw
|
|
6
|
+
DQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAM8Gdm81LvuqMyJr9sO+KtJz+PhM
|
|
7
|
+
x75w6uc5q3J8sTHGhOtWJlXiBFf8gbBkxUsQwDMEEbJ+WV63oqq9InVBrMHg9FxH
|
|
8
|
+
415dC0UlCv5IjKij4N5OVRnUTZDoxXczVVscNFyQcRhJO1TqORw6uOF8gd/MVWl4
|
|
9
|
+
6gJapzkLBMTIaqRUVbX3hTJpiGc1RV2zJmLkkvBtJ+lzqza0bklXh52LLs2UpTc1
|
|
10
|
+
e5ADVoq9K09G5QXES/GlFMYerQbtdXl0KpUQugXtRFAOoOrFKQFLETZSDq80lC7p
|
|
11
|
+
+zN+wNOEAuHtJP7EZVk/gU8hEkSDMexW5NRndgeQb+N/JH8DIRBbhOytZbAo19Pq
|
|
12
|
+
LEZBucHheI0xstLWuIP+ktwa/rIWv5v4gv3JZ/4H3q6tGPHigLKneRmaXo3e6jna
|
|
13
|
+
RFDxQLXbJgI37qusk4Qyl/iBVSBZ+TABBvA/jPXnHdd29qkuMTXvWLIiBDM6H0+2
|
|
14
|
+
SUabsieR1CqNZs/6YLO7nQHwFudHqzo8OB4+3QIDAQABo3EwbzAJBgNVHRMEAjAA
|
|
15
|
+
MAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUfC99QRDzqEe0tw1Da+XR9u4dmjEwGgYD
|
|
16
|
+
VR0RBBMwEYEPc2ViYXN0aWFuQHlvLmxrMBoGA1UdEgQTMBGBD3NlYmFzdGlhbkB5
|
|
17
|
+
by5sazANBgkqhkiG9w0BAQsFAAOCAYEAwYCyAFFXgYXWgaO8vQEZoQSjp5v6g1v/
|
|
18
|
+
t9TcO8JmX6UqEgoRHsdxPEyCK9RroYIv7X5GDyJ12ZdiGpzCqJiBIC9Gz3cCWAbp
|
|
19
|
+
LtnkhO8SQbz5B0NMOvo4o6XnbAr+rhVihuJmf0zXInnm1KZW/Yi+4JNAebPqwF1S
|
|
20
|
+
VZ/2Dz2BtTuTFhqlHOGxV2NxcnZjFff9kfUOLwl/oNUKgBecsMP5aW74zSOmc2fO
|
|
21
|
+
3sykOkKf5mWSY/KSuaCmAP1Ou3UUXOQmxiPUW9SDAzhYGKS63yPMkzJAziDP9ewI
|
|
22
|
+
zmOE2OJr0NuCmH9ykqlJZU4wnmloCnE1+8kHCl4+76cgBnN5gnYnzUb4RDM3J4EI
|
|
23
|
+
Jdm7+JxQbgAP/HJ2C2ara+uwc9jwhw2s1b2+TPnVCZdh9uBttHWfk0wgDoeFwky1
|
|
24
|
+
BUdT7mtr41GgvWnIjaGWAldSuabxx5H+PKS5FzjNDMHThRZWuvYp/nP2RXDh4gIa
|
|
25
|
+
7hV09P+XxvS96G+petG5KmC/lev8VqKu
|
|
26
|
+
-----END CERTIFICATE-----
|
|
@@ -72,7 +72,7 @@ module ActiveModel
|
|
|
72
72
|
def add_invalid_vat_error(record, attribute, iso_country_code)
|
|
73
73
|
record.errors.add(attribute, :invalid_vat,
|
|
74
74
|
message: options[:message],
|
|
75
|
-
country_adjective: I18n.
|
|
75
|
+
country_adjective: I18n.translate(
|
|
76
76
|
:"valvat.country_adjectives.#{iso_country_code.downcase}",
|
|
77
77
|
default: [:"valvat.country_adjectives.eu", 'european']
|
|
78
78
|
))
|
data/lib/valvat/error.rb
CHANGED
|
@@ -4,9 +4,10 @@ class Valvat
|
|
|
4
4
|
Error = Class.new(RuntimeError)
|
|
5
5
|
|
|
6
6
|
class ViesError < Error
|
|
7
|
-
def initialize(faultstring = 'UNKNOWN')
|
|
8
|
-
@faultstring = faultstring
|
|
9
|
-
|
|
7
|
+
def initialize(faultstring = 'UNKNOWN', exception = nil)
|
|
8
|
+
@faultstring = faultstring || exception.inspect
|
|
9
|
+
@exception = exception
|
|
10
|
+
super(faultstring)
|
|
10
11
|
end
|
|
11
12
|
|
|
12
13
|
def to_s
|
|
@@ -22,6 +23,8 @@ class Valvat
|
|
|
22
23
|
ServiceUnavailable = Class.new(ViesMaintenanceError)
|
|
23
24
|
MemberStateUnavailable = Class.new(ViesMaintenanceError)
|
|
24
25
|
|
|
26
|
+
OperationUnknown = Class.new(ViesError)
|
|
27
|
+
HTTPError = Class.new(ViesError)
|
|
25
28
|
Timeout = Class.new(ViesError)
|
|
26
29
|
InvalidRequester = Class.new(ViesError)
|
|
27
30
|
BlockedError = Class.new(ViesError)
|
data/lib/valvat/lookup/fault.rb
CHANGED
|
@@ -3,11 +3,22 @@
|
|
|
3
3
|
class Valvat
|
|
4
4
|
class Lookup
|
|
5
5
|
class Fault < Response
|
|
6
|
-
def
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
def to_hash
|
|
7
|
+
@to_hash ||= case @raw
|
|
8
|
+
when Savon::HTTPError
|
|
9
|
+
{ error: HTTPError.new(nil, @raw) }
|
|
10
|
+
when Savon::UnknownOperationError
|
|
11
|
+
{ error: OperationUnknown.new(nil, @raw) }
|
|
12
|
+
else
|
|
13
|
+
fault = @raw.to_hash[:fault][:faultstring]
|
|
9
14
|
|
|
10
|
-
|
|
15
|
+
if fault == 'INVALID_INPUT'
|
|
16
|
+
{ valid: false }
|
|
17
|
+
else
|
|
18
|
+
error = (FAULTS[fault] || UnknownViesError).new(fault)
|
|
19
|
+
{ error: error }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
11
22
|
end
|
|
12
23
|
|
|
13
24
|
FAULTS = {
|
|
@@ -22,10 +33,6 @@ class Valvat
|
|
|
22
33
|
'MS_MAX_CONCURRENT_REQ' => RateLimitError,
|
|
23
34
|
'MS_MAX_CONCURRENT_REQ_TIME' => RateLimitError
|
|
24
35
|
}.freeze
|
|
25
|
-
|
|
26
|
-
def self.fault_to_error(fault)
|
|
27
|
-
(FAULTS[fault] || UnknownViesError).new(fault)
|
|
28
|
-
end
|
|
29
36
|
end
|
|
30
37
|
end
|
|
31
38
|
end
|
data/lib/valvat/utils.rb
CHANGED
|
@@ -8,7 +8,7 @@ class Valvat
|
|
|
8
8
|
SUPPORTED_STATES = EU_MEMBER_STATES + %w[GB]
|
|
9
9
|
EU_COUNTRIES = EU_MEMBER_STATES # TODO: Remove constant
|
|
10
10
|
COUNTRY_PATTERN = /\A([A-Z]{2})(.+)\Z/.freeze
|
|
11
|
-
NORMALIZE_PATTERN = /[[:
|
|
11
|
+
NORMALIZE_PATTERN = /([[:punct:][:cntrl:]]|[[:space:]])+/.freeze
|
|
12
12
|
CONVERT_VAT_TO_ISO_COUNTRY = { 'EL' => 'GR', 'XI' => 'GB' }.freeze
|
|
13
13
|
CONVERT_ISO_TO_VAT_COUNTRY = CONVERT_VAT_TO_ISO_COUNTRY.invert.freeze
|
|
14
14
|
|
data/lib/valvat/version.rb
CHANGED
|
@@ -16,4 +16,17 @@ describe Valvat::Lookup::Request do
|
|
|
16
16
|
expect(response).to be_a(Valvat::Lookup::Fault)
|
|
17
17
|
expect(response.to_hash).to eql({ valid: false })
|
|
18
18
|
end
|
|
19
|
+
|
|
20
|
+
context 'when Savon::UnknownOperationError is (wrongly) thrown' do
|
|
21
|
+
before do
|
|
22
|
+
dbl = double(Savon::Client)
|
|
23
|
+
allow(Savon::Client).to receive(:new).and_return(dbl)
|
|
24
|
+
allow(dbl).to receive(:call).and_raise(Savon::UnknownOperationError.new('from stub'))
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "does handle it like vies down" do
|
|
28
|
+
response = described_class.new('IE6388047V', {}).perform
|
|
29
|
+
expect(response.to_hash[:error]).to be_a(Valvat::OperationUnknown)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
19
32
|
end
|
data/spec/valvat/lookup_spec.rb
CHANGED
|
@@ -239,5 +239,39 @@ describe Valvat::Lookup do
|
|
|
239
239
|
expect(described_class.validate('DE601', options.merge(raise_error: false))).to be(nil)
|
|
240
240
|
end
|
|
241
241
|
end
|
|
242
|
+
|
|
243
|
+
describe 'Error : Savon::UnknownOperationError' do
|
|
244
|
+
before do
|
|
245
|
+
dbl = double(Savon::Client)
|
|
246
|
+
allow(Savon::Client).to receive(:new).and_return(dbl)
|
|
247
|
+
allow(dbl).to receive(:call).and_raise(Savon::UnknownOperationError.new('from stub'))
|
|
248
|
+
end
|
|
249
|
+
subject(:result) { described_class.validate('DE601', options) }
|
|
250
|
+
|
|
251
|
+
it 'raises error' do
|
|
252
|
+
expect { result }.to raise_error(Valvat::OperationUnknown, /#<Savon::UnknownOperationError: from stub>/)
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
it 'returns nil with raise_error set to false' do
|
|
256
|
+
expect(described_class.validate('DE601', options.merge(raise_error: false))).to be(nil)
|
|
257
|
+
end
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
describe 'Error : Savon::HTTPError' do
|
|
261
|
+
before do
|
|
262
|
+
dbl = double(Savon::Client)
|
|
263
|
+
allow(Savon::Client).to receive(:new).and_return(dbl)
|
|
264
|
+
allow(dbl).to receive(:call).and_raise(Savon::HTTPError.new(Struct.new(:code, :body).new(403, 'from stub')))
|
|
265
|
+
end
|
|
266
|
+
subject(:result) { described_class.validate('DE601', options) }
|
|
267
|
+
|
|
268
|
+
it 'raises error' do
|
|
269
|
+
expect { result }.to raise_error(Valvat::HTTPError, /#<Savon::HTTPError: HTTP error \(403\): from stub>/)
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
it 'returns nil with raise_error set to false' do
|
|
273
|
+
expect(described_class.validate('DE601', options.merge(raise_error: false))).to be(nil)
|
|
274
|
+
end
|
|
275
|
+
end
|
|
242
276
|
end
|
|
243
277
|
end
|
data.tar.gz.sig
CHANGED
|
@@ -1,3 +1 @@
|
|
|
1
|
-
|
|
2
|
-
n���S��������%�2l������_�!�L����O�:��
|
|
3
|
-
�K�?�aJmW�x´�L-�F��
|
|
1
|
+
X�R��oy����+�����k�d���/�P�je�?�C�5�����S���cQ�fۆ���=4f�À�nQ��Y�t8�u�f瑘 �}
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: valvat
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sebastian Munz
|
|
@@ -10,31 +10,32 @@ bindir: bin
|
|
|
10
10
|
cert_chain:
|
|
11
11
|
- |
|
|
12
12
|
-----BEGIN CERTIFICATE-----
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
13
|
+
MIIEZDCCAsygAwIBAgIBATANBgkqhkiG9w0BAQsFADA8MRIwEAYDVQQDDAlzZWJh
|
|
14
|
+
c3RpYW4xEjAQBgoJkiaJk/IsZAEZFgJ5bzESMBAGCgmSJomT8ixkARkWAmxrMB4X
|
|
15
|
+
DTIyMDEyNjE4MjIxNFoXDTIzMDEyNjE4MjIxNFowPDESMBAGA1UEAwwJc2ViYXN0
|
|
16
|
+
aWFuMRIwEAYKCZImiZPyLGQBGRYCeW8xEjAQBgoJkiaJk/IsZAEZFgJsazCCAaIw
|
|
17
|
+
DQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAM8Gdm81LvuqMyJr9sO+KtJz+PhM
|
|
18
|
+
x75w6uc5q3J8sTHGhOtWJlXiBFf8gbBkxUsQwDMEEbJ+WV63oqq9InVBrMHg9FxH
|
|
19
|
+
415dC0UlCv5IjKij4N5OVRnUTZDoxXczVVscNFyQcRhJO1TqORw6uOF8gd/MVWl4
|
|
20
|
+
6gJapzkLBMTIaqRUVbX3hTJpiGc1RV2zJmLkkvBtJ+lzqza0bklXh52LLs2UpTc1
|
|
21
|
+
e5ADVoq9K09G5QXES/GlFMYerQbtdXl0KpUQugXtRFAOoOrFKQFLETZSDq80lC7p
|
|
22
|
+
+zN+wNOEAuHtJP7EZVk/gU8hEkSDMexW5NRndgeQb+N/JH8DIRBbhOytZbAo19Pq
|
|
23
|
+
LEZBucHheI0xstLWuIP+ktwa/rIWv5v4gv3JZ/4H3q6tGPHigLKneRmaXo3e6jna
|
|
24
|
+
RFDxQLXbJgI37qusk4Qyl/iBVSBZ+TABBvA/jPXnHdd29qkuMTXvWLIiBDM6H0+2
|
|
25
|
+
SUabsieR1CqNZs/6YLO7nQHwFudHqzo8OB4+3QIDAQABo3EwbzAJBgNVHRMEAjAA
|
|
26
|
+
MAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUfC99QRDzqEe0tw1Da+XR9u4dmjEwGgYD
|
|
27
|
+
VR0RBBMwEYEPc2ViYXN0aWFuQHlvLmxrMBoGA1UdEgQTMBGBD3NlYmFzdGlhbkB5
|
|
28
|
+
by5sazANBgkqhkiG9w0BAQsFAAOCAYEAwYCyAFFXgYXWgaO8vQEZoQSjp5v6g1v/
|
|
29
|
+
t9TcO8JmX6UqEgoRHsdxPEyCK9RroYIv7X5GDyJ12ZdiGpzCqJiBIC9Gz3cCWAbp
|
|
30
|
+
LtnkhO8SQbz5B0NMOvo4o6XnbAr+rhVihuJmf0zXInnm1KZW/Yi+4JNAebPqwF1S
|
|
31
|
+
VZ/2Dz2BtTuTFhqlHOGxV2NxcnZjFff9kfUOLwl/oNUKgBecsMP5aW74zSOmc2fO
|
|
32
|
+
3sykOkKf5mWSY/KSuaCmAP1Ou3UUXOQmxiPUW9SDAzhYGKS63yPMkzJAziDP9ewI
|
|
33
|
+
zmOE2OJr0NuCmH9ykqlJZU4wnmloCnE1+8kHCl4+76cgBnN5gnYnzUb4RDM3J4EI
|
|
34
|
+
Jdm7+JxQbgAP/HJ2C2ara+uwc9jwhw2s1b2+TPnVCZdh9uBttHWfk0wgDoeFwky1
|
|
35
|
+
BUdT7mtr41GgvWnIjaGWAldSuabxx5H+PKS5FzjNDMHThRZWuvYp/nP2RXDh4gIa
|
|
36
|
+
7hV09P+XxvS96G+petG5KmC/lev8VqKu
|
|
36
37
|
-----END CERTIFICATE-----
|
|
37
|
-
date:
|
|
38
|
+
date: 2022-01-26 00:00:00.000000000 Z
|
|
38
39
|
dependencies:
|
|
39
40
|
- !ruby/object:Gem::Dependency
|
|
40
41
|
name: savon
|
|
@@ -112,6 +113,7 @@ files:
|
|
|
112
113
|
- certs/yolk.pem
|
|
113
114
|
- gemfiles/activemodel-5
|
|
114
115
|
- gemfiles/activemodel-6
|
|
116
|
+
- gemfiles/activemodel-7
|
|
115
117
|
- gemfiles/standalone
|
|
116
118
|
- lib/active_model/validations/valvat_validator.rb
|
|
117
119
|
- lib/valvat.rb
|
|
@@ -225,8 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
225
227
|
- !ruby/object:Gem::Version
|
|
226
228
|
version: '0'
|
|
227
229
|
requirements: []
|
|
228
|
-
|
|
229
|
-
rubygems_version: 2.7.6.2
|
|
230
|
+
rubygems_version: 3.3.3
|
|
230
231
|
signing_key:
|
|
231
232
|
specification_version: 4
|
|
232
233
|
summary: Validates european vat numbers. Standalone or as a ActiveModel validator.
|
metadata.gz.sig
CHANGED
|
Binary file
|