const { net } = require('electron'); async function get(url, headers) { return request({ url, method: 'GET', headers }) } async function post(url, body, headers) { return request({ url, method: 'POST', headers }, body) } async function request(options, body) { return new Promise((resolve, reject) => { const responseBody = []; let responseHeaders; let responseStatus; 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: parseReponseBody(responseBody), }); }); 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(JSON.stringify(body), 'utf-8') } request.end(); }); } function parseReponseBody(body) { if (Array.isArray(body)) { if (body.length) { return JSON.parse(body.join('')); } } } module.exports = { get, post };