Skip to content

Commit 4e314bc

Browse files
authored
Updating API calls to support new GraphQL schema (#12)
1 parent 28bdba2 commit 4e314bc

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

src/routers/volkswagen.py

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,25 @@ async def get_volkswagen_inventory(
1919
"referer": "https://www.vw.com/",
2020
}
2121

22-
inventory_post_data = {
23-
"operationName": "InventoryData",
24-
"variables": {
25-
"zipcode": common_params.zip,
26-
"distance": common_params.radius,
27-
"pageSize": 1000,
28-
"pageNumber": 0,
29-
"sortBy": "",
30-
"filters": str(
31-
{"modelName": [common_params.model], "modelYear": [common_params.year]}
32-
),
22+
inventory_post_data = (
23+
{
24+
"operationName": "InventoryData",
25+
"variables": {
26+
"zipcode": common_params.zip,
27+
"distance": common_params.radius,
28+
"pageSize": 1000,
29+
"pageNumber": 0,
30+
"sortBy": "",
31+
"filters": str(
32+
{
33+
"modelName": [common_params.model],
34+
"modelYear": [common_params.year],
35+
}
36+
),
37+
},
38+
"query": "query InventoryData($zipcode: String, $distance: Int, $pageSize: Int, $pageNumber: Int, $sortBy: String, $filters: String) { inventory: getPagedInventoryByZipAndDistanceAndFilters( zipcode: $zipcode distance: $distance pageSize: $pageSize pageNumber: $pageNumber sortBy: $sortBy filters: $filters ) { modelYear totalPages totalVehicles vehicles { vin model msrp modelYear exteriorColorDescription factoryExteriorCode interiorColorDescription factoryInteriorCode mpgCity subTrimLevel engineDescription mpgHighway trimLevel onlineSalesURL dealerEnrollmentStatusInd inTransit dealer { dealerid name url distance address1 city state postalcode phone aor __typename } highlightFeatures { code name __typename } __typename } dealers { dealerid name url distance address1 city state postalcode phone aor __typename } aorDealer { dealerid name url distance address1 city state postalcode phone aor __typename } aorVehicle { vin model msrp modelYear exteriorColorDescription factoryExteriorCode interiorColorDescription factoryInteriorCode mpgCity subTrimLevel engineDescription mpgHighway trimLevel onlineSalesURL dealerEnrollmentStatusInd inTransit dealer { dealerid name url distance address1 city state postalcode phone aor __typename } highlightFeatures { code name __typename } __typename } filter { modelName filterAttributes { transmissionType { key value __typename } exteriorColor { key value __typename } interiorColor { key value __typename } modelYear { key value __typename } trimLevel { key value __typename } dealers { key value __typename } models { key value __typename } __typename } __typename } __typename }}", # noqa: B950
3339
},
34-
"query": "query InventoryData($zipcode: String, $distance: Int, $pageSize: Int, $pageNumber: Int, $sortBy: String, $filters: String) { inventory: getPagedInventoryByZipAndDistanceAndFilters( zipcode: $zipcode distance: $distance pageSize: $pageSize pageNumber: $pageNumber sortBy: $sortBy filters: $filters ) { modelYear totalPages totalVehicles vehicles { vin model msrp modelYear exteriorColorDescription factoryExteriorCode interiorColorDescription factoryInteriorCode mpgCity subTrimLevel engineDescription mpgHighway trimLevel onlineSalesURL dealerEnrollmentStatusInd inTransit dealer { dealerid name url distance address1 address2 city state postalcode phone aor __typename } highlightFeatures { key title __typename } __typename } dealers { dealerid name url distance address1 address2 city state postalcode phone aor __typename } aorDealer { dealerid name url distance address1 address2 city state postalcode phone aor __typename } aorVehicle { vin model msrp modelYear exteriorColorDescription factoryExteriorCode interiorColorDescription factoryInteriorCode mpgCity subTrimLevel engineDescription mpgHighway trimLevel onlineSalesURL dealerEnrollmentStatusInd inTransit dealer { dealerid name url distance address1 address2 city state postalcode phone aor __typename } highlightFeatures { key title __typename } __typename } filter { modelName filterAttributes { transmissionType { key value __typename } exteriorColor { key value __typename } interiorColor { key value __typename } modelYear { key value __typename } trimLevel { key value __typename } dealers { key value __typename } models { key value __typename } __typename } __typename } __typename }}", # noqa: B950
35-
}
36-
40+
)
3741
async with AsyncHTTPClient(
3842
base_url=vw_base_url, timeout_value=30.0, verify=verify_ssl
3943
) as http:
@@ -44,8 +48,8 @@ async def get_volkswagen_inventory(
4448
try:
4549
# If the inventory request was successful, even if 0 vehicles are returned
4650
# the response will have the ['inventory'] dict, so validating that
47-
data["data"]["inventory"]
48-
return send_response(response_data=data)
51+
data[0]["data"]["inventory"]
52+
return send_response(response_data=data[0])
4953
except KeyError:
5054
return error_response(
5155
error_message="An error occurred with the Volkswagen API",
@@ -64,22 +68,20 @@ async def get_hyundai_vin_detail(req: Request) -> dict:
6468
"referer": "https://www.vw.com/",
6569
}
6670

67-
vin_post_data = (
68-
{
69-
"operationName": "VehicleData",
70-
"variables": {"vin": vin, "zipcode": zip_code},
71-
"query": "query VehicleData($vin: String, $zipcode: String) { vehicle: getVehicleByVinAndZip(vin: $vin, zipcode: $zipcode) { portInstalledOptions vin model modelCode modelYear modelVersion carlineKey msrp mpgCity subTrimLevel engineDescription exteriorColorDescription exteriorColorBaseColor exteriorColorCode exteriorSwatchUrl interiorColorDescription interiorColorBaseColor interiorColorCode interiorSwatchUrl factoryExteriorCode factoryInteriorCode mpgHighway trimLevel mediaAssets { view type url __typename } onlineSalesURL dealerEnrollmentStatusInd highlightFeatures { key title __typename } factoryModelYear dealerInstalledAccessories { mdmCode title longTitle description image itemPrice creativeTitle __typename } dealer { generatedDate dealerid name dealername seolookupkey address1 address2 city state postalcode country url phone latlong staticMapsUrl distance inventoryCount aor isSatellite isAssessing lmaId __typename } specifications { text values { key label longTitle value __typename } key __typename } destinationCharge __typename }}", # noqa: B950
72-
},
73-
)
71+
vin_post_data = {
72+
"operationName": "VehicleData",
73+
"variables": {"vin": vin, "zipcode": zip_code},
74+
"query": "query VehicleData($vin: String, $zipcode: String) { vehicle: getVehicleByVinAndZip(vin: $vin, zipcode: $zipcode) { vin model modelCode modelYear modelVersion carlineKey msrp mpgCity subTrimLevel engineDescription exteriorColorDescription exteriorColorCode interiorColorDescription interiorColorCode factoryExteriorCode factoryInteriorCode mpgHighway trimLevel mediaAssets { view type url __typename } onlineSalesURL dealerEnrollmentStatusInd highlightFeatures { code name __typename } factoryModelYear dealerInstalledAccessories { optionCode optionDescription optionLongDescription price imageUrl __typename } dealer { dealerid name dealername address1 city state postalcode country url phone distance aor __typename } specifications { optionCode optionDescription salesFamily __typename } destinationCharge __typename }}\n", # noqa: B950
75+
}
7476

7577
async with AsyncHTTPClient(
7678
base_url=vw_base_url, timeout_value=30.0, verify=verify_ssl
7779
) as http:
7880
vin = await http.post(uri="/", headers=headers, post_data=vin_post_data)
7981
data = vin.json()
8082

81-
if len(data[0]["data"]["vehicle"]) > 0:
82-
return send_response(response_data=data[0])
83+
if len(data["data"]["vehicle"]) > 0:
84+
return send_response(response_data=data)
8385
else:
8486
return error_response(
8587
error_message="An error occurred with the Volkswagen API", error_data=data

0 commit comments

Comments
 (0)