vat_check 0.0.5 → 1.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
- SHA1:
3
- metadata.gz: 161ced06f8bbe69aa32234ea941633459c9d5c48
4
- data.tar.gz: d214f05f0e53135fcd031ff70e95721895d29363
2
+ SHA256:
3
+ metadata.gz: d2b59db2a077b774b3a45f9ef3e56ccf07e3880d04629720e02956f3c0c86db6
4
+ data.tar.gz: 74f27a5c342b028fc5e2cf263b74b15645a8573c0b209204b2c35fd1721f04b7
5
5
  SHA512:
6
- metadata.gz: 22c4797919d9ce95b01846ba5e5a2480878a3107bc42fb8a60b5aded16faa75180e50e0412efa45ba078454ab46451b367f58ba7c6d10ac8cf33ea7c16df5f08
7
- data.tar.gz: bec7aaf559af0894e3d89871e00a74f25f751443d211f7d623ce100a78925b647f4ac4c86f95316bfeae9766845137f52fde1f76f3a1e9d6445f1a953009ee6c
6
+ metadata.gz: 4ad491dc114a787d8953a24e655d8d5ebbc84c365c2d78669c60c3387b7e16f69f154d8865f57f3f8d0f42124b6778d543b5cd50f7d0bef13a0e08bd2160c2e6
7
+ data.tar.gz: 333eeb1ebfa7e53ae6db4d377d7e75e770e302b10c88349f8b327a5a8d1a35e3f67eca5dc0b38041c575e0b169d44f946e3af16b42dd36209eabe7152a1a2deb
data/.editorconfig ADDED
@@ -0,0 +1,12 @@
1
+ # http://editorconfig.org/
2
+
3
+ root = true
4
+
5
+ [*]
6
+ end_of_line = lf
7
+ charset = utf-8
8
+
9
+ [*.rb]
10
+ indent_style=space
11
+ indent_size=2
12
+ trim_trailing_whitespace = true
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ *.gem
11
+ .env*
12
+ .byebug_history
13
+ .rspec_status
14
+ .ruby-gemset
15
+ .ruby-version
16
+
17
+ Gemfile.lock
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - "2.3"
5
+ - "2.4"
6
+ - "2.5"
7
+ - "2.6"
8
+ - "2.7"
9
+
10
+ script: bundle exec rspec
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/README.md ADDED
@@ -0,0 +1,129 @@
1
+ # VatCheck [![RubyGems](http://img.shields.io/gem/v/vat_check.svg?style=flat-square)](https://rubygems.org/gems/vat_check) [![Build Status](http://img.shields.io/travis/taxjar/vat_check.svg?style=flat-square)](https://travis-ci.org/taxjar/vat_check)
2
+
3
+ Need to verify VAT identification numbers in Ruby? VatCheck makes it easy and simple:
4
+
5
+ ```ruby
6
+ vat = VatCheck.new('GB333289454')
7
+ puts 'Legit' if vat.valid?
8
+ ```
9
+
10
+ That's it. VatCheck first performs a regex validation. If it passes, it attempts to verify on VIES. [Sometimes it's up, sometimes it's down](http://ec.europa.eu/taxation_customs/vies/help.html). When it's down `valid?` gracefully falls back to regex.
11
+
12
+ ## Getting Started
13
+
14
+ Install it via RubyGems in your terminal:
15
+
16
+ ```
17
+ gem install vat_check
18
+ ```
19
+
20
+ Or in your Gemfile:
21
+
22
+ ```
23
+ gem 'vat_check', '~> 1.0'
24
+ ```
25
+
26
+ **Note:** VatCheck requires Ruby 2.3 or greater.
27
+
28
+ ## Basic Usage
29
+
30
+ ```ruby
31
+ require 'vat_check'
32
+ vat = VatCheck.new('VATIN')
33
+ ```
34
+
35
+ This returns some nifty helper methods and attributes for all your VAT needs:
36
+
37
+ ```ruby
38
+ vat.regex # True if regex validated
39
+ vat.vies # True if VIES response is valid
40
+ vat.vies_available # True if VIES available
41
+ vat.response # Hash if VIES available
42
+
43
+ vat.valid? # True if regex and VIES validated (if available)
44
+ vat.exists? # True if VIES available and VATIN exists
45
+ ```
46
+
47
+ `valid?` will be your goto method for quick verification. If VIES is currently available, you'll get a response hash:
48
+
49
+ ```ruby
50
+ {
51
+ :country_code => "GB",
52
+ :vat_number => "333289454",
53
+ :request_date => Date.today,
54
+ :valid => true,
55
+ :name => "BRITISH BROADCASTING CORPORATION",
56
+ :address => "FAO ALEX FITZPATRICK\nBBC GROUP VAT MANAGER\nTHE LIGHT HOUSE (1ST FLOOR)\nMEDIA VILLAGE, 201 WOOD LANE\nLONDON\nW127TQ"
57
+ }
58
+ ```
59
+
60
+ If you'd like to expose that info, go ahead and use `exists?`:
61
+
62
+ ```ruby
63
+ if vat.exists?
64
+ puts vat.response.name
65
+ puts vat.response.address
66
+ end
67
+ ```
68
+
69
+ ## Examples
70
+
71
+ VIES is available, the VAT is formatted correctly, and the VAT is registered to a business:
72
+
73
+ ```ruby
74
+ vat = VatCheck.new('GB333289454')
75
+ vat.regex # true
76
+ vat.vies_available # true
77
+ vat.vies # true
78
+ vat.response # {:country_code=>"GB", :vat_number=>"333289454", :request_date=>#<Date: 2016-01-13 ((2457401j,0s,0n),+0s,2299161j)>, :valid=>true, :name=>"BRITISH BROADCASTING CORPORATION", :address=>"FAO ALEX FITZPATRICK\nBBC GROUP VAT MANAGER\nTHE LIGHT HOUSE (1ST FLOOR)\nMEDIA VILLAGE, 201 WOOD LANE\nLONDON\nW12 7TQ"}
79
+ vat.valid? # true
80
+ vat.exists? # true
81
+ ```
82
+
83
+ VIES is available, the VAT ID is formatted correctly, but the VAT ID is not registered to a business:
84
+
85
+ ```ruby
86
+ vat = VatCheck.new('GB999999999')
87
+ vat.regex # true
88
+ vat.vies_available # true
89
+ vat.vies # false
90
+ vat.response # {:country_code=>"GB", :vat_number=>"999999999", :request_date=>#<Date: 2016-01-13 ((2457401j,0s,0n),+0s,2299161j)>, :valid=>false, :name=>"---", :address=>"---"}
91
+ vat.valid? # false
92
+ vat.exists? # false
93
+ ```
94
+
95
+ VAT is not formatted correctly:
96
+
97
+ ```ruby
98
+ vat = VatCheck.new('XX123456789')
99
+ vat.regex # false
100
+ vat.vies # false
101
+ vat.vies_available # false
102
+ vat.response # {}
103
+ vat.valid? # false
104
+ vat.exists? # false
105
+ ```
106
+
107
+ VAT is formatted correctly but VIES is unavailable:
108
+
109
+ ```ruby
110
+ vat = VatCheck.new('GB333289454')
111
+ vat.regex # true
112
+ vat.vies_available # false
113
+ vat.vies # false
114
+ vat.response # {:error=>"Service unavailable"}
115
+ vat.valid? # true
116
+ vat.exists? # false
117
+ ```
118
+
119
+ VAT is formatted correctly but VIES times out:
120
+
121
+ ```ruby
122
+ vat = VatCheck.new('GB333289454')
123
+ vat.regex # true
124
+ vat.vies_available # false
125
+ vat.vies # false
126
+ vat.response # {:error=>"Service timed out"}
127
+ vat.valid? # true
128
+ vat.exists? # false
129
+ ```
data/lib/vat_check.rb CHANGED
@@ -1,3 +1,8 @@
1
+ require 'vat_check/utility'
2
+ require 'vat_check/format'
3
+ require 'vat_check/requests'
4
+ require 'vat_check/version'
5
+
1
6
  class VatCheck
2
7
  attr_reader :regex, :vies, :vies_available, :response
3
8
 
@@ -18,8 +23,4 @@ class VatCheck
18
23
  def exists?
19
24
  return @vies
20
25
  end
21
- end
22
-
23
- require 'vat_check/utility'
24
- require 'vat_check/format'
25
- require 'vat_check/requests'
26
+ end
@@ -3,7 +3,7 @@ require 'savon'
3
3
  class VatCheck
4
4
  module Request
5
5
  def self.lookup(vat)
6
- client = Savon.client(wsdl: 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl', log: false, log_level: :debug, pretty_print_xml: false)
6
+ client = Savon.client(wsdl: 'https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl', follow_redirects: true, log: false, log_level: :debug, pretty_print_xml: false)
7
7
  country_code, vat_number = VatCheck::Utility.split(vat)
8
8
  begin
9
9
  response = client.call(:check_vat, message: {country_code: country_code, vat_number: vat_number}, message_tag: :checkVat)
@@ -19,4 +19,4 @@ class VatCheck
19
19
  end
20
20
  end
21
21
  end
22
- end
22
+ end
@@ -0,0 +1,3 @@
1
+ class VatCheck
2
+ VERSION = '1.0.0'
3
+ end
data/vat_check.gemspec ADDED
@@ -0,0 +1,37 @@
1
+ lib = File.expand_path('lib', __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'vat_check/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'vat_check'
7
+ s.version = VatCheck::VERSION
8
+ s.authors = ['TaxJar']
9
+ s.email = 'support@taxjar.com'
10
+
11
+ s.summary = 'Validate VAT IDs'
12
+ s.description = 'A gem by TaxJar that can be used to validate VAT IDs'
13
+ s.homepage = 'https://taxjar.com'
14
+ s.license = 'MIT'
15
+
16
+ if s.respond_to?(:metadata)
17
+ s.metadata['source_code_uri'] = 'https://github.com/taxjar/vat_check'
18
+ s.metadata['bug_tracker_uri'] = 'https://github.com/taxjar/vat_check/issues'
19
+ else
20
+ raise 'RubyGems 2.0 or newer is required to protect against ' \
21
+ 'public gem pushes.'
22
+ end
23
+
24
+ s.require_paths = ['lib']
25
+ s.files = `git ls-files -z`.split("\x0").reject do |f|
26
+ f.match(%r{^(test|spec|features)/})
27
+ end
28
+
29
+ s.required_ruby_version = '>= 2.3'
30
+
31
+ s.add_runtime_dependency 'savon', '~> 2.12', '>= 2.12.0'
32
+
33
+ s.add_development_dependency 'rspec', '~> 3.4'
34
+ s.add_development_dependency 'vcr', '~> 5.1', '>= 5.1.0'
35
+ s.add_development_dependency 'webmock', '~> 3.8', '>= 3.8.3'
36
+ s.add_development_dependency 'mocha', '~> 1.1', '>= 1.1.0'
37
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vat_check
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TaxJar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-11 00:00:00.000000000 Z
11
+ date: 2020-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: savon
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.11'
19
+ version: '2.12'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 2.11.0
22
+ version: 2.12.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '2.11'
29
+ version: '2.12'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 2.11.0
32
+ version: 2.12.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rspec
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -50,40 +50,40 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '3.0'
53
+ version: '5.1'
54
54
  - - ">="
55
55
  - !ruby/object:Gem::Version
56
- version: 3.0.1
56
+ version: 5.1.0
57
57
  type: :development
58
58
  prerelease: false
59
59
  version_requirements: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: '3.0'
63
+ version: '5.1'
64
64
  - - ">="
65
65
  - !ruby/object:Gem::Version
66
- version: 3.0.1
66
+ version: 5.1.0
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: webmock
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: '1.22'
73
+ version: '3.8'
74
74
  - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: 1.22.0
76
+ version: 3.8.3
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '1.22'
83
+ version: '3.8'
84
84
  - - ">="
85
85
  - !ruby/object:Gem::Version
86
- version: 1.22.0
86
+ version: 3.8.3
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: mocha
89
89
  requirement: !ruby/object:Gem::Requirement
@@ -110,14 +110,23 @@ executables: []
110
110
  extensions: []
111
111
  extra_rdoc_files: []
112
112
  files:
113
+ - ".editorconfig"
114
+ - ".gitignore"
115
+ - ".travis.yml"
116
+ - Gemfile
117
+ - README.md
113
118
  - lib/vat_check.rb
114
119
  - lib/vat_check/format.rb
115
120
  - lib/vat_check/requests.rb
116
121
  - lib/vat_check/utility.rb
117
- homepage: http://taxjar.com
122
+ - lib/vat_check/version.rb
123
+ - vat_check.gemspec
124
+ homepage: https://taxjar.com
118
125
  licenses:
119
126
  - MIT
120
- metadata: {}
127
+ metadata:
128
+ source_code_uri: https://github.com/taxjar/vat_check
129
+ bug_tracker_uri: https://github.com/taxjar/vat_check/issues
121
130
  post_install_message:
122
131
  rdoc_options: []
123
132
  require_paths:
@@ -126,7 +135,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
135
  requirements:
127
136
  - - ">="
128
137
  - !ruby/object:Gem::Version
129
- version: 2.1.6
138
+ version: '2.3'
130
139
  required_rubygems_version: !ruby/object:Gem::Requirement
131
140
  requirements:
132
141
  - - ">="
@@ -134,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
143
  version: '0'
135
144
  requirements: []
136
145
  rubyforge_project:
137
- rubygems_version: 2.4.8
146
+ rubygems_version: 2.7.6.2
138
147
  signing_key:
139
148
  specification_version: 4
140
149
  summary: Validate VAT IDs