UNPKG

minvera

Version:

An rpgmaker mv tool for managing plugins and external files

87 lines (74 loc) 2.25 kB
//============================================================================= // Http.js //============================================================================= class Http { constructor() { this._http = require("http"); this._https = require("https"); } get(info, callback) { const { URL } = require('url'); let url = new URL(info.url); let options = { host: url.host, path: url.pathname, }; if(/^https/.test(url)) this.httpsget(options, info, callback); else if(/^http/.test(url)) this.httpget(options, info, callback); } httpget(options, info, callback) { this._http.get(options, (res) => { const { statusCode } = res; const contentType = res.headers['content-type']; let error; if(statusCode !== 200) { error = new Error(`Request Failed.\nStatus Code:${statusCode}`); } if(error) { console.error(error.message); res.resume(); return; } res.setEncoding('utf8'); let rawData = ''; res.on('data', (chunk) => { rawData += chunk; }); res.on('end', () => { try { callback(info.name, rawData, contentType); } catch(e) { console.error(e.message); } }); }).on('error', (e) => { console.error(`Error: ${e.message}`); }); } httpsget(options, info, callback) { this._https.get(options, (res) => { const { statusCode } = res; const contentType = res.headers['content-type']; let error; if(statusCode !== 200) { error = new Error(`Request Failed.\nStatus Code:${statusCode}`); } if(error) { console.error(error.message); res.resume(); return; } res.setEncoding('utf8'); let rawData = ''; res.on('data', (chunk) => { rawData += chunk; }); res.on('end', () => { try { callback(info.name, rawData, contentType); } catch(e) { console.error(e.message); } }); }).on('error', (e) => { console.error(`Error: ${e.message}`); }); } } module.exports = Http;