blackbook_client 0.1.6 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|