import { errorHandler, getAuthHeaderOptions, fetchRespHandler, addQueryParams, } from "../utils/http"; const API_ENDPOINT = process.env.REACT_APP_UPLOAD_SERVICE_URL; const vehiclesAPI = { addVehicle: async (vehicle, token) => fetch(`${API_ENDPOINT}/vehicle`, { method: "POST", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), body: JSON.stringify(vehicle), }) .then(fetchRespHandler) .catch(errorHandler), deleteVehicle: async (vin, token) => fetch(`${API_ENDPOINT}/vehicle/${vin}`, { method: "DELETE", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler), getConnections: async (vins, token) => { const u = `${API_ENDPOINT}/carsconnected?vins=${vins.join(",")}`; return fetch(u, { method: "GET", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler); }, getECUs: async (search, token) => { const u = addQueryParams(`${API_ENDPOINT}/vehicleecus`, search); return fetch(u, { method: "GET", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler); }, getModels: async (token) => fetch(`${API_ENDPOINT}/vehiclemodels`, { method: "GET", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler), getLocations: async (token) => fetch(`${API_ENDPOINT}/carslocations`, { method: "GET", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler), getState: async (token, vin) => fetch(`${API_ENDPOINT}/carstate?vin=${vin}`, { method: "GET", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler), getVehicle: async (vin, token) => fetch(`${API_ENDPOINT}/vehicle/${vin}`, { method: "GET", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler), getVehicles: async (search, token) => { const u = addQueryParams(`${API_ENDPOINT}/vehicles`, search); return fetch(u, { method: "GET", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler); }, getFleets: async (vin, search, token) => { const u = addQueryParams(`${API_ENDPOINT}/vehicle/${vin}/fleets`, search) return fetch(u, { method: "GET", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler); }, getYears: async (token) => fetch(`${API_ENDPOINT}/vehicleyears`, { method: "GET", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler), sendCommand: async (vins, command, token) => fetch(`${API_ENDPOINT}/vehiclecommand`, { method: "POST", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), body: JSON.stringify({ vins, ...command, }), }) .then(fetchRespHandler) .catch(errorHandler), updateVehicle: async (vin, vehicle, token) => fetch(`${API_ENDPOINT}/vehicle/${vin}`, { method: "PUT", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), body: JSON.stringify(vehicle), }) .then(fetchRespHandler) .catch(errorHandler), getCANSignals: async (vin, token) => fetch(`${API_ENDPOINT}/cansignals/${vin}`, { method: "GET", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler), }; export default vehiclesAPI;