vin_query 1.0.2 → 1.1.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 +4 -4
- data/.travis.yml +4 -9
- data/CHANGELOG.md +5 -0
- data/Gemfile +0 -3
- data/LICENSE +1 -1
- data/README.md +25 -7
- data/lib/vin_query.rb +1 -1
- data/lib/vin_query/configuration.rb +28 -0
- data/lib/vin_query/exceptions.rb +0 -2
- data/lib/vin_query/query.rb +22 -27
- data/lib/vin_query/trim_level.rb +0 -2
- data/lib/vin_query/version.rb +1 -3
- data/spec/lib/vin_query/configuration_spec.rb +33 -0
- data/spec/lib/vin_query/query_spec.rb +7 -8
- data/spec/lib/vin_query/trim_level_spec.rb +0 -1
- data/spec/spec_helper.rb +0 -1
- data/vin_query.gemspec +3 -2
- metadata +45 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e009eb9349dbfd08405cb85579c97ecd30bc0e07
|
4
|
+
data.tar.gz: 2ac76344b14f533acfa5bf73762580d8e8a056cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19a2ab043fce4cd50b2239d2892297c00d3cb18986d82da20cbf3d05c42aaec258d6a3f2f61c3cb3b4fe9a7c937cbca719e9a4c963c2b89232b7873cafd8b9cd
|
7
|
+
data.tar.gz: 83761294c6cd620c739a6262eaf7769feb10ed2aaafacb9cb7551e79b0c34fb27420dce2e1c47b7766ab4b005cb30e631dd2fed8786220ba718cb0e226cdb5ba
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -26,17 +26,35 @@ Or install it yourself as:
|
|
26
26
|
|
27
27
|
Pass in the URL and access code provided by vinquery.com as well as the report type you want (defaults to report type '2' -- the extended report type).
|
28
28
|
|
29
|
-
Note, A VinQuery::Query class has an array of trim levels. This is due to the VinQuery service returning a array of possible trim levels for certain makes/models.
|
29
|
+
Note, A `VinQuery::Query` class has an array of trim levels. This is due to the VinQuery service returning a array of possible trim levels for certain makes/models.
|
30
30
|
|
31
31
|
```ruby
|
32
|
-
query = VinQuery.get('1C3CC4FB8AN236750',
|
33
|
-
:
|
34
|
-
:
|
35
|
-
:
|
32
|
+
query = VinQuery.get('1C3CC4FB8AN236750',
|
33
|
+
url: 'vinquery-url-here',
|
34
|
+
access_code: 'access-code-here',
|
35
|
+
report_type: 'report-type-here')
|
36
36
|
|
37
|
-
query.valid?
|
37
|
+
query.valid? # => true
|
38
|
+
```
|
39
|
+
|
40
|
+
### Configuration
|
41
|
+
|
42
|
+
It also accepts a configuration block to streamline gets.
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
VinQuery.configure do |config|
|
46
|
+
config.url = 'vinquery-url-here'
|
47
|
+
config.access_code = 'access-code-here'
|
48
|
+
config.report_type = 2
|
49
|
+
end
|
50
|
+
|
51
|
+
query = VinQuery.get('1C3CC4FB8AN236750')
|
52
|
+
query.valid? # => true
|
53
|
+
```
|
38
54
|
|
39
|
-
|
55
|
+
_Note, `trim_levels` will always be an array. Empty, or otherwise._
|
56
|
+
|
57
|
+
```
|
40
58
|
vehicle = query.trim_levels.first
|
41
59
|
|
42
60
|
vehicle.attributes[:make] # => Chrysler
|
data/lib/vin_query.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
module VinQuery
|
2
|
+
class << self
|
3
|
+
attr_accessor :configuration
|
4
|
+
end
|
5
|
+
|
6
|
+
def self.configure
|
7
|
+
self.configuration ||= Configuration.new
|
8
|
+
yield(configuration)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.reset
|
12
|
+
self.configuration = Configuration.new
|
13
|
+
end
|
14
|
+
|
15
|
+
class Configuration
|
16
|
+
attr_accessor :url, :access_code, :report_type
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
@report_type = 2
|
20
|
+
end
|
21
|
+
|
22
|
+
def merge_options(options={})
|
23
|
+
options.each do |k, v|
|
24
|
+
self.send("#{k}=", v)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/vin_query/exceptions.rb
CHANGED
data/lib/vin_query/query.rb
CHANGED
@@ -1,18 +1,15 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
require 'net/http'
|
3
2
|
require 'nokogiri'
|
4
3
|
|
5
4
|
module VinQuery
|
6
5
|
class Query
|
7
|
-
attr_reader :url, :trim_levels
|
6
|
+
attr_reader :vin, :url, :trim_levels
|
8
7
|
|
9
8
|
def initialize(vin, options={})
|
10
|
-
|
11
|
-
|
12
|
-
report_type = 2 || options[:report_type]
|
13
|
-
|
9
|
+
VinQuery.configuration.merge_options(options)
|
10
|
+
@vin = vin
|
14
11
|
@trim_levels = []
|
15
|
-
|
12
|
+
build_url
|
16
13
|
end
|
17
14
|
|
18
15
|
def valid?
|
@@ -20,15 +17,11 @@ module VinQuery
|
|
20
17
|
end
|
21
18
|
|
22
19
|
def validate(xml)
|
23
|
-
doc = Nokogiri::XML
|
24
|
-
|
25
|
-
if doc.xpath('//VINquery/VIN').size == 0
|
26
|
-
raise ValidationError
|
27
|
-
end
|
20
|
+
doc = Nokogiri::XML(xml)
|
21
|
+
raise ValidationError if doc.xpath('//VINquery/VIN').size == 0
|
28
22
|
|
29
|
-
|
30
|
-
|
31
|
-
if vin.attributes['Status'].to_s == 'SUCCESS'
|
23
|
+
results_vin = doc.xpath('//VINquery/VIN').first
|
24
|
+
if results_vin.attributes['Status'].to_s == 'SUCCESS'
|
32
25
|
@valid = true
|
33
26
|
else
|
34
27
|
@valid = false
|
@@ -36,13 +29,10 @@ module VinQuery
|
|
36
29
|
end
|
37
30
|
|
38
31
|
def parse(xml)
|
39
|
-
doc = Nokogiri::XML
|
40
|
-
|
41
|
-
|
42
|
-
if doc.xpath('//VINquery/VIN/Vehicle').size == 0
|
43
|
-
raise ParseError
|
44
|
-
end
|
32
|
+
doc = Nokogiri::XML(xml)
|
33
|
+
raise ParseError if doc.xpath('//VINquery/VIN/Vehicle').size == 0
|
45
34
|
|
35
|
+
results_vin = doc.xpath('//VINquery/VIN').first
|
46
36
|
doc.xpath('//VINquery/VIN/Vehicle').each do |v|
|
47
37
|
vehicle = {}
|
48
38
|
|
@@ -62,20 +52,25 @@ module VinQuery
|
|
62
52
|
end
|
63
53
|
end
|
64
54
|
|
65
|
-
@trim_levels.push(VinQuery::TrimLevel.new(
|
55
|
+
@trim_levels.push(VinQuery::TrimLevel.new(results_vin.attributes['Number'].to_s, vehicle))
|
66
56
|
end
|
67
57
|
end
|
68
58
|
|
69
59
|
def get
|
70
|
-
xml = fetch
|
71
|
-
|
72
|
-
if validate xml
|
73
|
-
parse xml
|
74
|
-
end
|
60
|
+
xml = fetch(@url)
|
61
|
+
parse(xml) if validate(xml)
|
75
62
|
end
|
76
63
|
|
77
64
|
private
|
78
65
|
|
66
|
+
def build_url
|
67
|
+
url = VinQuery.configuration.url
|
68
|
+
access_code = VinQuery.configuration.access_code
|
69
|
+
report_type = VinQuery.configuration.report_type
|
70
|
+
|
71
|
+
@url = "#{url}?accessCode=#{access_code}&vin=#{vin}&reportType=#{report_type}"
|
72
|
+
end
|
73
|
+
|
79
74
|
def fetch(url)
|
80
75
|
Net::HTTP.get(URI.parse(url))
|
81
76
|
end
|
data/lib/vin_query/trim_level.rb
CHANGED
data/lib/vin_query/version.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe VinQuery::Configuration do
|
4
|
+
before do
|
5
|
+
VinQuery.configure do |config|
|
6
|
+
config.url = 'http://www.vinquery.com/asdf/asdf.aspx'
|
7
|
+
config.access_code = 'asdf1234-asdf1234-asdf1234'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'respects set values in a config block' do
|
12
|
+
expect(VinQuery.configuration.url).to eq 'http://www.vinquery.com/asdf/asdf.aspx'
|
13
|
+
expect(VinQuery.configuration.access_code).to eq 'asdf1234-asdf1234-asdf1234'
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'has a default report type' do
|
17
|
+
expect(VinQuery.configuration.report_type).to eq 2
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'when manually given options' do
|
21
|
+
it 'overrides default configuration settings' do
|
22
|
+
VinQuery.configuration.merge_options(report_type: 3)
|
23
|
+
expect(VinQuery.configuration.report_type).to eq 3
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'overrides previously set configuration settings' do
|
27
|
+
VinQuery.configuration.merge_options(access_code: '1234')
|
28
|
+
expect(VinQuery.configuration.access_code).to eq '1234'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
after { VinQuery.reset }
|
33
|
+
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
require 'spec_helper'
|
3
2
|
|
4
3
|
describe VinQuery::Query do
|
@@ -39,7 +38,7 @@ describe VinQuery::Query do
|
|
39
38
|
|
40
39
|
describe '#parse' do
|
41
40
|
context 'when a single trim level is returned' do
|
42
|
-
before
|
41
|
+
before { client.parse xml_single }
|
43
42
|
|
44
43
|
it 'populates an array of trim levels with 1 trim level' do
|
45
44
|
expect(client.trim_levels.size).to be 1
|
@@ -63,7 +62,7 @@ describe VinQuery::Query do
|
|
63
62
|
end
|
64
63
|
|
65
64
|
context 'when multiple trim levels are returned' do
|
66
|
-
before
|
65
|
+
before { client.parse xml_multi }
|
67
66
|
|
68
67
|
it 'populates an array of trim levels with the number of trim levels' do
|
69
68
|
expect(client.trim_levels.size).to be 4
|
@@ -95,8 +94,8 @@ describe VinQuery::Query do
|
|
95
94
|
|
96
95
|
describe '#get' do
|
97
96
|
context 'success response' do
|
98
|
-
before
|
99
|
-
client.
|
97
|
+
before do
|
98
|
+
allow(client).to receive(:fetch).and_return(xml_multi)
|
100
99
|
client.get
|
101
100
|
end
|
102
101
|
|
@@ -110,8 +109,8 @@ describe VinQuery::Query do
|
|
110
109
|
end
|
111
110
|
|
112
111
|
context 'error response' do
|
113
|
-
before
|
114
|
-
client.
|
112
|
+
before do
|
113
|
+
allow(client).to receive(:fetch).and_return(xml_error)
|
115
114
|
client.get
|
116
115
|
end
|
117
116
|
|
@@ -125,7 +124,7 @@ describe VinQuery::Query do
|
|
125
124
|
end
|
126
125
|
|
127
126
|
context '404 response' do
|
128
|
-
before
|
127
|
+
before { allow(client).to receive(:fetch).and_return('<html>404</html>') }
|
129
128
|
|
130
129
|
it 'fetches xml and response cannot be validated' do
|
131
130
|
expect{ client.get }.to raise_error VinQuery::ValidationError
|
data/spec/spec_helper.rb
CHANGED
data/vin_query.gemspec
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
1
|
require File.expand_path('../lib/vin_query/version', __FILE__)
|
3
2
|
|
4
3
|
Gem::Specification.new do |gem|
|
@@ -18,7 +17,9 @@ Gem::Specification.new do |gem|
|
|
18
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
18
|
gem.require_paths = ['lib']
|
20
19
|
|
21
|
-
gem.add_dependency 'nokogiri', '
|
20
|
+
gem.add_dependency 'nokogiri', '> 1.5'
|
22
21
|
|
22
|
+
gem.add_development_dependency 'rake'
|
23
|
+
gem.add_development_dependency 'bundler'
|
23
24
|
gem.add_development_dependency 'rspec'
|
24
25
|
end
|
metadata
CHANGED
@@ -1,41 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vin_query
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Underwood
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-12-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.5
|
19
|
+
version: '1.5'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.5
|
26
|
+
version: '1.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: rspec
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
30
58
|
requirements:
|
31
|
-
- -
|
59
|
+
- - ">="
|
32
60
|
- !ruby/object:Gem::Version
|
33
61
|
version: '0'
|
34
62
|
type: :development
|
35
63
|
prerelease: false
|
36
64
|
version_requirements: !ruby/object:Gem::Requirement
|
37
65
|
requirements:
|
38
|
-
- -
|
66
|
+
- - ">="
|
39
67
|
- !ruby/object:Gem::Version
|
40
68
|
version: '0'
|
41
69
|
description: A ruby library for fetching and parsing VIN information from vinquery.com,
|
@@ -46,15 +74,16 @@ executables: []
|
|
46
74
|
extensions: []
|
47
75
|
extra_rdoc_files: []
|
48
76
|
files:
|
49
|
-
- .gitignore
|
50
|
-
- .rspec
|
51
|
-
- .travis.yml
|
77
|
+
- ".gitignore"
|
78
|
+
- ".rspec"
|
79
|
+
- ".travis.yml"
|
52
80
|
- CHANGELOG.md
|
53
81
|
- Gemfile
|
54
82
|
- LICENSE
|
55
83
|
- README.md
|
56
84
|
- Rakefile
|
57
85
|
- lib/vin_query.rb
|
86
|
+
- lib/vin_query/configuration.rb
|
58
87
|
- lib/vin_query/exceptions.rb
|
59
88
|
- lib/vin_query/query.rb
|
60
89
|
- lib/vin_query/trim_level.rb
|
@@ -62,6 +91,7 @@ files:
|
|
62
91
|
- spec/fixtures/error.xml
|
63
92
|
- spec/fixtures/success_multi.xml
|
64
93
|
- spec/fixtures/success_single.xml
|
94
|
+
- spec/lib/vin_query/configuration_spec.rb
|
65
95
|
- spec/lib/vin_query/query_spec.rb
|
66
96
|
- spec/lib/vin_query/trim_level_spec.rb
|
67
97
|
- spec/spec_helper.rb
|
@@ -75,17 +105,17 @@ require_paths:
|
|
75
105
|
- lib
|
76
106
|
required_ruby_version: !ruby/object:Gem::Requirement
|
77
107
|
requirements:
|
78
|
-
- -
|
108
|
+
- - ">="
|
79
109
|
- !ruby/object:Gem::Version
|
80
110
|
version: '0'
|
81
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
112
|
requirements:
|
83
|
-
- -
|
113
|
+
- - ">="
|
84
114
|
- !ruby/object:Gem::Version
|
85
115
|
version: '0'
|
86
116
|
requirements: []
|
87
117
|
rubyforge_project:
|
88
|
-
rubygems_version: 2.
|
118
|
+
rubygems_version: 2.5.1
|
89
119
|
signing_key:
|
90
120
|
specification_version: 4
|
91
121
|
summary: A ruby library for accessing vinquery.com
|
@@ -93,6 +123,7 @@ test_files:
|
|
93
123
|
- spec/fixtures/error.xml
|
94
124
|
- spec/fixtures/success_multi.xml
|
95
125
|
- spec/fixtures/success_single.xml
|
126
|
+
- spec/lib/vin_query/configuration_spec.rb
|
96
127
|
- spec/lib/vin_query/query_spec.rb
|
97
128
|
- spec/lib/vin_query/trim_level_spec.rb
|
98
129
|
- spec/spec_helper.rb
|