import axios from "axios"; const UPLOAD_ENDPOINT = process.env.REACT_APP_OTA_SERVICE_URL; const fileField = "file"; export const getCancelToken = () => { const token = axios.CancelToken; return token.source(); }; export const uploadFile = (data, token, onProgress, cancelToken) => { const form = new FormData(); let options = { method: "POST", headers: { "Content-Type": "multipart/form-data", Authorization: `Bearer ${token}`, }, cancelToken, }; if (onProgress) { options = { ...options, onUploadProgress: (event) => { onProgress(event.loaded / event.total); }, }; } for (let key in data) { if (key !== fileField) form.append(key, data[key]); } form.append(fileField, data[fileField]); return axios .post(`${UPLOAD_ENDPOINT}/manifestfile`, form, options) .then((response) => response.data) .catch((error) => { if (typeof error.response.data === "string") { return { error: error.response.statusText, message: error.response.data, }; } return error.response.data; }); };