in packages/renderer-core/src/utils/request.ts [80:165]
export function request(dataAPI: any, method = 'GET', data: any, headers = {}, otherProps: any = {}) {
let processedHeaders = headers || {};
let payload = data;
if (method === 'PUT' || method === 'DELETE') {
processedHeaders = {
Accept: 'application/json',
'Content-Type': 'application/json',
...processedHeaders,
};
payload = JSON.stringify(payload || {});
}
return new Promise((resolve, reject) => {
if (otherProps.timeout) {
setTimeout(() => {
reject(new Error('timeout'));
}, otherProps.timeout);
}
fetch(dataAPI, {
method,
credentials: 'include',
headers: processedHeaders,
body: payload,
...otherProps,
})
.then((response) => {
switch (response.status) {
case 200:
case 201:
case 202:
return response.json();
case 204:
if (method === 'DELETE') {
return {
success: true,
};
} else {
return {
__success: false,
code: response.status,
};
}
case 400:
case 401:
case 403:
case 404:
case 406:
case 410:
case 422:
case 500:
return response
.json()
.then((res) => {
return {
__success: false,
code: response.status,
data: res,
};
})
.catch(() => {
return {
__success: false,
code: response.status,
};
});
default:
}
return null;
})
.then((json) => {
if (!json) {
reject(json);
return;
}
if (json.__success !== false) {
resolve(json);
} else {
// eslint-disable-next-line no-param-reassign
delete json.__success;
reject(json);
}
})
.catch((err) => {
reject(err);
});
});
}