[Updater > Module] Replace Updater > Request with just Request integration

This commit is contained in:
Ducko 2022-04-21 17:06:34 +01:00
parent ac009a179e
commit d3fe05b22e
2 changed files with 18 additions and 62 deletions

View File

@ -5,7 +5,7 @@ const Module = require('module');
const { execFile } = require('child_process');
const paths = require('../paths');
const request = require('./request');
const request = require('request');
const events = exports.events = new (require('events').EventEmitter)();
exports.INSTALLED_MODULE = 'installed-module'; // Fixes DiscordNative ensureModule as it uses export
@ -134,15 +134,14 @@ const checkModules = async () => {
hostAvail = false;
try {
const { body } = await request.get({
remote = await new Promise((res) => request({
url: baseUrl + '/versions.json',
qs
});
}, (e, r, b) => res(JSON.parse(b))));
checking = false;
remote = JSON.parse(body);
} catch (e) {
checking = false;
log('Modules', 'Check failed', e);
return events.emit('update-check-finished', {
@ -181,26 +180,24 @@ const downloadModule = async (name, ver) => {
const path = join(downloadPath, name + '-' + ver + '.zip');
const stream = fs.createWriteStream(path);
stream.on('progress', ([ cur, total ]) => events.emit('downloading-module-progress', {
name,
cur,
total
}));
// log('Modules', 'Downloading', `${name}@${ver}`);
log('Modules', 'Downloading', `${name}@${ver}`);
let success, total, cur = 0;
request({ url, qs }).on('response', (res) => {
success = res.statusCode === 200;
total = parseInt(res.headers['content-length'] ?? 1, 10);
let success = false;
try {
const resp = await request.get({
url,
qs,
stream
res.pipe(stream);
res.on('data', c => {
cur += c.length;
events.emit('downloading-module-progress', { name, cur, total });
});
});
await new Promise((res) => stream.on('close', res));
success = resp.statusCode === 200;
} catch (e) {
log('Modules', 'Fetch errored', e);
}
if (!installed[name]) installed[name] = {};

View File

@ -1,41 +0,0 @@
const request = require('request');
const nodeRequest = (opts) => new Promise((resolve, reject) => {
const { stream, timeout } = opts;
const req = request({ ...opts, timeout: timeout ?? 15000 });
req.on('response', (response) => {
const total = parseInt(response.headers['content-length'] || 1, 10);
let outOf = 0;
const chunks = [];
const badStatus = response.statusCode >= 300;
if (badStatus) stream = null;
response.on('data', chunk => {
chunks.push(chunk);
if (!stream) return;
outOf += chunk.length;
stream.write(chunk);
stream.emit('progress', [ outOf, total ]);
});
response.on('end', () => {
if (stream != null) {
stream.on('finish', () => resolve(response));
return stream.end();
}
if (badStatus) return reject(new Error('Req fail'));
resolve({ ...response, body: Buffer.concat(chunks) });
});
});
req.on('error', err => reject(err));
});
const meth = (method, opt) => nodeRequest({ ...(typeof opt === 'string' ? { url: opt } : opt), method });
exports.get = meth.bind(null, 'GET');