blackbook_client 0.1.6 → 0.2.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/Gemfile.lock +2 -2
- data/lib/blackbook_client/version.rb +1 -1
- data/lib/mappers/range_values_mapper.rb +15 -0
- data/lib/mappers/spec_pdf_mapper.rb +8 -0
- data/lib/mappers/uvc_mapper.rb +10 -0
- data/lib/rest_client.rb +26 -0
- data/lib/uvc_service.rb +26 -6
- data/lib/vin_service.rb +15 -6
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6d4a163c604ddf01c779e2cb4d322526ba0afa761a946f97d31cdfdf6cc7fe9
|
4
|
+
data.tar.gz: e6420e605c22211a1e1ac690195e7556fcc6680361622e7706ef0617fb931fe7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 515f6675b02aa459fc822885cdf73434019c58a240ac8f361c9406165afd6a042d62054ee4ab0f7f755578c27433d8eaf777aa067a03c34b7d8923ae4a7de1dd
|
7
|
+
data.tar.gz: 6b06de98b0e06adecdbebc3d431e2ef0cbb0e565b24c102be06bc4f1a0f75bde07ce3cd89d30b75f384b6191342182f2f5331bdf6cb5e2a39c7240538e407ddb
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
module RangeValuesMapper
|
2
|
+
def self.map_fields(response)
|
3
|
+
return {} unless response&.dig('used_vehicles', 'used_vehicle_list')
|
4
|
+
vehicle_range = response['used_vehicles']['used_vehicle_list'][0]
|
5
|
+
|
6
|
+
return {
|
7
|
+
range: {
|
8
|
+
xclean: vehicle_range['adjusted_whole_xclean'],
|
9
|
+
clean: vehicle_range['adjusted_whole_clean'],
|
10
|
+
average: vehicle_range['adjusted_whole_avg'],
|
11
|
+
rough: vehicle_range['adjusted_whole_rough']
|
12
|
+
}
|
13
|
+
}
|
14
|
+
end
|
15
|
+
end
|
data/lib/rest_client.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
|
1
2
|
module RestClient
|
3
|
+
|
2
4
|
BASE_URL = 'https://service.blackbookcloud.com'.freeze
|
3
5
|
|
4
6
|
def headers
|
@@ -6,6 +8,29 @@ module RestClient
|
|
6
8
|
{ Authorization: "Basic #{token}" }
|
7
9
|
end
|
8
10
|
|
11
|
+
def make_request(method, url, query_params = {})
|
12
|
+
return unless [:get].include?(method)
|
13
|
+
begin
|
14
|
+
response = JSON.parse(HTTParty.send(method, url, headers: headers, query: query_params))
|
15
|
+
status = 200
|
16
|
+
|
17
|
+
if response['error_count'].positive? || message_with_error(response)
|
18
|
+
response = { error: response['message_list'][0]['description'] }
|
19
|
+
status = 400
|
20
|
+
end
|
21
|
+
|
22
|
+
[response, status]
|
23
|
+
|
24
|
+
rescue => e
|
25
|
+
[ { error: e.to_s }, 500]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def message_with_error(response)
|
30
|
+
response['message_list'].any? && response['message_list'][0]['type'] == 'Error'
|
31
|
+
end
|
32
|
+
|
33
|
+
# TODO: deprecate this and start using make_request in services as it is used in vin_service and uvc_service
|
9
34
|
def process_response(response, transformer = nil)
|
10
35
|
status = 200
|
11
36
|
|
@@ -19,6 +44,7 @@ module RestClient
|
|
19
44
|
[response, status]
|
20
45
|
end
|
21
46
|
|
47
|
+
# TODO: deprecate and start using mappers lib/mappers as in vin_service and uvc_service
|
22
48
|
def map_fields(response)
|
23
49
|
return {} unless response && response['used_vehicles'] && response['used_vehicles']['used_vehicle_list']
|
24
50
|
vehicle_range = response['used_vehicles']['used_vehicle_list'][0]
|
data/lib/uvc_service.rb
CHANGED
@@ -1,17 +1,37 @@
|
|
1
|
+
require 'mappers/spec_pdf_mapper'
|
2
|
+
require 'vin_service'
|
3
|
+
|
1
4
|
module UVCService
|
2
5
|
include RestClient
|
6
|
+
include SpecPdfMapper
|
7
|
+
include VinService
|
3
8
|
|
4
9
|
VEHICLE_BY_UVC_URL =
|
5
10
|
"#{BASE_URL}/UsedCarWS/UsedCarWS/UsedVehicle/UVC".freeze
|
6
11
|
|
12
|
+
PDF_SPEC_BY_UVC_URL =
|
13
|
+
"#{BASE_URL}/UsedCarWS/UsedCarWS/PDFSpecs".freeze
|
14
|
+
|
7
15
|
def vehicle_by_uvc(uvc_id, query_params = {})
|
8
16
|
url = "#{VEHICLE_BY_UVC_URL}/#{uvc_id}"
|
9
17
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
18
|
+
response = make_request(:get, url, query_params)
|
19
|
+
return response unless response.last == 200
|
20
|
+
[RangeValuesMapper.map_fields(response.first), response.last]
|
21
|
+
end
|
22
|
+
|
23
|
+
def spec_pdf_data(uvc, query_params = {})
|
24
|
+
url = "#{PDF_SPEC_BY_UVC_URL}/#{uvc}"
|
25
|
+
|
26
|
+
response = make_request(:get, url, query_params)
|
27
|
+
return response unless response.last == 200
|
28
|
+
[SpecPdfMapper.map_fields(response.first), response.last]
|
29
|
+
end
|
30
|
+
|
31
|
+
# This method is used by web-system to generate vehicle spec pdfs for appraisers
|
32
|
+
def pdf_data_by_vin(vin, query_params = {})
|
33
|
+
response = uvc_by_vin(vin, query_params)
|
34
|
+
return response unless response.last == 200
|
35
|
+
spec_pdf_data(response.first[:uvc], query_params)
|
16
36
|
end
|
17
37
|
end
|
data/lib/vin_service.rb
CHANGED
@@ -1,18 +1,27 @@
|
|
1
1
|
require 'rest_client'
|
2
|
+
require 'mappers/uvc_mapper'
|
3
|
+
require 'mappers/range_values_mapper'
|
2
4
|
|
3
5
|
module VinService
|
4
6
|
include RestClient
|
7
|
+
include UvcMapper
|
8
|
+
include RangeValuesMapper
|
5
9
|
|
6
10
|
VEHICLE_BY_VIN_URL = "#{BASE_URL}/UsedCarWS/UsedCarWS/UsedVehicle/VIN".freeze
|
7
11
|
|
8
12
|
def range_by_vin(vin, query_params = {})
|
9
13
|
url = "#{VEHICLE_BY_VIN_URL}/#{vin}"
|
10
14
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
response = make_request(:get, url, query_params)
|
16
|
+
return response unless response.last == 200
|
17
|
+
[RangeValuesMapper.map_fields(response.first), response.last]
|
18
|
+
end
|
19
|
+
|
20
|
+
def uvc_by_vin(vin, query_params = {})
|
21
|
+
url = "#{VEHICLE_BY_VIN_URL}/#{vin}"
|
22
|
+
|
23
|
+
response = make_request(:get, url, query_params)
|
24
|
+
return response unless response.last == 200
|
25
|
+
[UvcMapper.map_fields(response.first), response.last]
|
17
26
|
end
|
18
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blackbook_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Schmeichel
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -118,6 +118,9 @@ files:
|
|
118
118
|
- lib/blackbook_client.rb
|
119
119
|
- lib/blackbook_client/version.rb
|
120
120
|
- lib/chromedata_service.rb
|
121
|
+
- lib/mappers/range_values_mapper.rb
|
122
|
+
- lib/mappers/spec_pdf_mapper.rb
|
123
|
+
- lib/mappers/uvc_mapper.rb
|
121
124
|
- lib/rest_client.rb
|
122
125
|
- lib/trade_service.rb
|
123
126
|
- lib/uvc_service.rb
|
@@ -142,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
145
|
version: '0'
|
143
146
|
requirements: []
|
144
147
|
rubyforge_project:
|
145
|
-
rubygems_version: 2.7.
|
148
|
+
rubygems_version: 2.7.8
|
146
149
|
signing_key:
|
147
150
|
specification_version: 4
|
148
151
|
summary: Blackbook Client
|