|
|
|
import 'es6-promise/auto';
|
|
|
|
import axios, { AxiosResponse, AxiosError } from 'axios';
|
|
|
|
import { CrudReqOpts, CrudParams, ResultType } from './crud.typings.d';
|
|
|
|
import { ReqPrefix } from '../constants/env';
|
|
|
|
const defaultHeaders = {
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
'X-Requested-With': 'XMLHttpRequest',
|
|
|
|
};
|
|
|
|
|
|
|
|
export function paramsSerializer(params: { [key: string]: any }) {
|
|
|
|
return Object.keys(params || {})
|
|
|
|
.map(paramKey => {
|
|
|
|
const paramValue = params[paramKey];
|
|
|
|
|
|
|
|
let value = '';
|
|
|
|
|
|
|
|
if (BI.isObject(paramValue)) {
|
|
|
|
value = BI.encodeURIComponent(JSON.stringify(paramValue));
|
|
|
|
} else {
|
|
|
|
value = paramValue;
|
|
|
|
}
|
|
|
|
|
|
|
|
return BI.isNull(value) ? '' : `${paramKey}=${value}`;
|
|
|
|
})
|
|
|
|
.filter(v => v !== '')
|
|
|
|
.join('&');
|
|
|
|
}
|
|
|
|
function getCookieByName(name: string):string {
|
|
|
|
let value = null;
|
|
|
|
const regExpName = new RegExp(name);
|
|
|
|
document.cookie.split(';').forEach((item: string) => {
|
|
|
|
if (item.match(regExpName)) {
|
|
|
|
value = item.split(`${name}=`)[1];
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
return value;
|
|
|
|
}
|
|
|
|
|
|
|
|
export async function request(reqOptions: CrudReqOpts = {}): Promise<ResultType> {
|
|
|
|
const { url, type, headers, data, params } = reqOptions;
|
|
|
|
|
|
|
|
return axios
|
|
|
|
.request({
|
|
|
|
url,
|
|
|
|
baseURL: ReqPrefix,
|
|
|
|
method: type,
|
|
|
|
headers: {
|
|
|
|
...defaultHeaders,
|
|
|
|
...headers,
|
|
|
|
Authorization: `Bearer ${getCookieByName('fine_auth_token')}`,
|
|
|
|
'Content-Type': 'application/json;charset=UTF-8',
|
|
|
|
},
|
|
|
|
params,
|
|
|
|
paramsSerializer,
|
|
|
|
data,
|
|
|
|
})
|
|
|
|
.then((response: AxiosResponse) => {
|
|
|
|
const status = response.status;
|
|
|
|
|
|
|
|
return status === 200
|
|
|
|
? typeof response.data === 'string'
|
|
|
|
? BI.jsonDecode(response.data)
|
|
|
|
: response.data
|
|
|
|
: {};
|
|
|
|
})
|
|
|
|
.catch((error: AxiosError) => {
|
|
|
|
console.log(error);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
export function requestGet(url: string, data?: any, params: CrudParams = {}) {
|
|
|
|
const timeStamp = new Date().getTime();
|
|
|
|
|
|
|
|
return request({
|
|
|
|
url: url.includes('?') ? `${url}&_=${timeStamp}` : `${url}?_=${timeStamp}`,
|
|
|
|
type: 'GET',
|
|
|
|
data,
|
|
|
|
params,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
export function requestPost(url: string, data = {}, params: CrudParams = {}) {
|
|
|
|
return request({
|
|
|
|
url,
|
|
|
|
type: 'POST',
|
|
|
|
data,
|
|
|
|
params,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
export function requestDelete(url: string, data = {}) {
|
|
|
|
return request({
|
|
|
|
url,
|
|
|
|
type: 'DELETE',
|
|
|
|
data,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
export function requestPut(url: string, data = {}, params: CrudParams = {}) {
|
|
|
|
return request({
|
|
|
|
url,
|
|
|
|
type: 'PUT',
|
|
|
|
data,
|
|
|
|
params,
|
|
|
|
});
|
|
|
|
}
|