@lcap/nasl
Version:
NetEase Application Specific Language
103 lines • 3.74 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const errHandles_1 = __importDefault(require("./errHandles"));
const cookie_1 = __importDefault(require("../../utils/cookie"));
const isPromise = function (func) {
return func && typeof func.then === 'function';
};
function httpCode(response, params, requestInfo) {
const data = response.data;
if ((data.code === undefined) || (data.code + '').startsWith('2')) {
return response;
}
if (data.code === 401339 && data.msg === '租户已过期或禁用') {
location.href = '/dashboard/exception/tenantExpired';
return;
}
if (typeof window !== 'undefined' && new RegExp('^/designer').test(window.location.pathname)) {
if (data.code === 401) {
window.location.href = '/login';
}
}
if (data) {
data.request = response?.request;
}
return Promise.reject(data);
}
function shortResponse(response, params, requestInfo) {
try {
if (globalThis?.document) {
const authorization = cookie_1.default.get('authorization');
const newAuthorization = response.headers?.authorization;
if (newAuthorization && newAuthorization !== authorization) {
cookie_1.default.set({ authorization: newAuthorization }, 2, 200);
}
const refreshToken = localStorage.getItem('refreshtoken');
const newRefreshToken = response.headers?.refreshtoken;
if (newRefreshToken && newRefreshToken !== refreshToken) {
localStorage.setItem('refreshtoken', newRefreshToken);
}
if (response?.headers?.['max-age']) {
let maxAge = Number(response?.headers?.['max-age'] || 0);
if (maxAge > 200) {
maxAge -= 200;
}
const expiredTime = Date.parse(new Date()) / 1000 + maxAge;
localStorage.setItem('authorizationExpiredRefreshTime', expiredTime);
}
}
}
catch (err) {
console.warn(err);
}
if (params === false)
return response;
if (response.data && response.data.result !== undefined) {
return response.data.result;
}
else {
return response.data;
}
}
const httpError = {
reject(err, params, requestInfo) {
const { url, config = {} } = requestInfo;
const { method, body = {}, headers = {} } = url;
// 处理code
if (err === 'expired request') {
throw err;
}
let handle;
if (!err.code) {
handle = errHandles_1.default.localError;
}
else {
handle = errHandles_1.default[err.code];
if (!handle)
handle = errHandles_1.default.defaults;
}
const handleOut = handle({
config, baseURL: (config.baseURL || ''), url, method, body, headers,
}, err);
if (isPromise(handleOut))
return handleOut;
throw err;
},
};
function default_1(service) {
if (process.env.NODE_ENV === 'development') {
service.preConfig.set('baseURL', (requestInfo, baseURL) => {
if (!baseURL.startsWith('http')) {
throw new Error('set baseURL only support cross domain');
}
});
}
service.postConfig.set('httpCode', httpCode);
service.postConfig.set('httpError', httpError);
service.postConfig.set('shortResponse', shortResponse);
}
exports.default = default_1;
//# sourceMappingURL=add.configs.js.map