|
- import axios from "axios";
- import { FILE_UP_POST, FILE_DOWN_GET } from "../utils/ApiPathConst";
- import qs from 'qs';
-
- export const get = ({ url, params, onSuccess, onFail, onError }) => {
- axios.get(url, {
- params,
- paramsSerializer: (p) => qs.stringify(p, { arrayFormat: 'repeat' }) // <-- FIX
- }).then(
- (response) => { onResponse(response, onSuccess, onFail); }
- ).catch((error) => {
- return handleError(error, onError);
- });
- };
-
- //TODO
- export const put = ({ url, params, onSuccess, onFail, onError }) => {
- axios.put(url, params).then(
- (response) => { onResponse(response, onSuccess, onFail); }
- ).catch(error => {
- return handleError(error, onError);
- });
- };
-
- export const patch = ({ url, params, onSuccess, onFail, onError }) => {
- axios.patch(url, params).then(
- (response) => { onResponse(response, onSuccess, onFail); }
- ).catch(error => {
- return handleError(error, onError);
- });
- };
-
- export const post = ({ url, params, onSuccess, onFail, onError, headers }) => {
- headers = headers ? headers : {
- "Content-Type": "application/json"
- };
-
- axios.post(url, params,
- {
- headers: headers
- }).then(
- (response) => { onResponse(response, onSuccess, onFail); }
- ).catch(error => {
- return handleError(error, onError);
- });
- };
-
- export const postWithFiles = ({ url, params, files, onSuccess, onFail, onError }) => {
- var formData = new FormData();
- for (let i = 0; i < files.length; i++) {
- const file = files[i]
- formData.append("multipartFileList", file);
- }
- if (params)
- for (var key in params) {
- if (typeof (params[key]) === 'object') {
- formData.append(key, JSON.stringify(params[key]));
- } else {
- formData.append(key, params[key]);
- }
- }
-
- axios.post(url, formData,
- { headers: { "Content-Type": "multipart/form-data" } })
- .then(
- (response) => { onResponse(response, onSuccess, onFail); }
- ).catch(error => {
- return handleError(error, onError);
- });
- };
-
- export const fileDownload = ({ url, fileId, skey, params, method, onResponse, onError }) => {
- if (!url) {
- url = FILE_DOWN_GET + "/" + fileId + "/" + skey
- }
- if (method == 'post') {
- axios.post(url, params,
- {
- responseType: 'blob',
- headers: {
- "Content-Type": "application/json"
- }
- }
- ).then(
- (response) => {
- fileDownloadResponse(response, onResponse)
- }
- ).catch(error => {
- return handleError(error, onError);
- });
-
- } else {
- axios.get(url,
- {
- responseType: 'blob',
- params: params
- }
- ).then(
- (response) => {
- fileDownloadResponse(response, onResponse)
- }
- ).catch(error => {
- return handleError(error, onError);
- });
- }
- };
-
- const fileDownloadResponse = (response, onResponse) => {
- const fn = response.headers.get("content-disposition")?.split("filename=")[1]?.split('"')[1]?.trim() ?? filename;
- const url = URL.createObjectURL(response.data);
- const a = document.createElement('a');
- a.href = url;
- a.setAttribute("download", fn);
- document.body.appendChild(a);
- a.click();
- document.body.removeChild(a);
- URL.revokeObjectURL(url);
- if (onResponse) {
- onResponse();
- }
- }
-
- export const fileUpload = ({ refType, refId, files, refCode, onSuccess, onFail, onError }) => {
- postWithFiles({
- url: FILE_UP_POST,
- params: {
- refType: refType,
- refId: refId,
- refCode: refCode
- },
- files: files,
- onSuccess: onSuccess,
- onFail: onFail,
- onError: onError
- });
- };
-
-
- const onResponse = (response, onSuccess, onFail) => {
- if (response.status >= 300 || response.status < 200) {
- console.log("onFail");
- if (onFail) {
- onFail(response);
- } else {
- console.log(response);
- }
- return;
- }
-
- if (onSuccess) {
- onSuccess(response?.data);
- }
- }
-
- const handleError = (error, onError) => {
- if (onError) {
- return onError(error);
- } else {
- // console.log(error);
- return false;
- }
- }
|