57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
const { net } = require('electron');
|
|
|
|
async function get(url) {
|
|
return request({ url, method: 'GET' })
|
|
}
|
|
|
|
async function post(url, body) {
|
|
return request({ url, method: 'POST' }, body)
|
|
}
|
|
|
|
async function request(options, body) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
const responseBody = [];
|
|
let responseHeaders;
|
|
let responseStatus;
|
|
|
|
console.log(options);
|
|
const request = net.request(options);
|
|
|
|
request.on('response', (response) => {
|
|
responseStatus = response.statusCode;
|
|
responseHeaders = response.headers;
|
|
|
|
response.on('data', (chunk) => {
|
|
if (chunk) {
|
|
responseBody.push(`${chunk}`);
|
|
}
|
|
});
|
|
|
|
response.on('end', () => {
|
|
resolve({
|
|
status: responseStatus,
|
|
headers: responseHeaders,
|
|
body: JSON.parse(responseBody.join('')),
|
|
});
|
|
});
|
|
|
|
response.on('aborted', () => console.log('request aborted'));
|
|
response.on('error', (error) => reject(error));
|
|
});
|
|
|
|
request.on('error', (error) => reject(error));
|
|
|
|
request.setHeader('Content-Type', 'application/json');
|
|
if (['POST'].includes(options.method.toUpperCase())) {
|
|
request.write(body, 'utf-8')
|
|
}
|
|
request.end();
|
|
|
|
});
|
|
}
|
|
|
|
|
|
module.exports = {
|
|
get
|
|
}; |