deputy-timesheet/app_main/request.js

57 lines
1.4 KiB
JavaScript
Raw Normal View History

2022-09-04 12:03:12 +02:00
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
};