import { addQueryParams, errorHandler, fetchRespHandler, getAuthHeaderOptions } from "../utils/http"; const API_ENDPOINT = process.env.REACT_APP_OTA_SERVICE_URL; const fleetsAPI = { addFleet: async (fleet, token) => fetch(`${API_ENDPOINT}/fleet`, { method: "POST", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), body: JSON.stringify(fleet), }) .then(fetchRespHandler) .catch(errorHandler), getFleet: async (name, token) => fetch(`${API_ENDPOINT}/fleet/${name}`, { method: "GET", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler), getFleets: async (search, token) => fetch(addQueryParams(`${API_ENDPOINT}/fleets`, search), { method: "GET", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler), updateFleet: async (name, fleet, token) => fetch(`${API_ENDPOINT}/fleet/${name}`, { method: "PUT", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), body: JSON.stringify(fleet), }) .then(fetchRespHandler) .catch(errorHandler), deleteFleet: async (name, token) => fetch(`${API_ENDPOINT}/fleet/${name}`, { method: "DELETE", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler), getFleetVehicles: async (name, search, token) => fetch(addQueryParams(`${API_ENDPOINT}/fleet/${name}/vehicles`, search), { method: "GET", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler), addFleetVehicle: async (name, vehicle, token) => fetch(`${API_ENDPOINT}/fleet/${name}/vehicle`, { method: "POST", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), body: JSON.stringify(vehicle), }) .then(fetchRespHandler) .catch(errorHandler), deleteFleetVehicle: async (name, vehicle, token) => fetch(`${API_ENDPOINT}/fleet/${name}/vehicle/${vehicle.vin}`, { method: "DELETE", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler), getFleetCANFilters: async (name, search, token) => fetch(addQueryParams(`${API_ENDPOINT}/fleet/${name}/filters`, search), { method: "GET", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler), addFleetCANFilter: async (name, filter, token) => fetch(`${API_ENDPOINT}/fleet/${name}/filter`, { method: "POST", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), body: JSON.stringify(filter), }) .then(fetchRespHandler) .catch(errorHandler), updateFleetCANFilter: async (name, can_id, filter, token) => fetch(`${API_ENDPOINT}/fleet/${name}/filter/${can_id}`, { method: "PUT", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), body: JSON.stringify(filter), }) .then(fetchRespHandler) .catch(errorHandler), deleteFleetCANFilter: async (name, can_id, token) => fetch(`${API_ENDPOINT}/fleet/${name}/filter/${can_id}`, { method: "DELETE", headers: Object.assign( { "Content-Type": "application/json" }, getAuthHeaderOptions(token) ), }) .then(fetchRespHandler) .catch(errorHandler), }; export default fleetsAPI;