cpd_client
Version:
/!\ Pour utiliser ce module il faut aussi utiliser le [CPD_SERVER](https://www.npmjs.com/package/cpd_server)
76 lines (68 loc) • 2.78 kB
JavaScript
const fetch = require("node-fetch")
const fs = require('fs')
const downloader = require('./downloader')
const t = module.exports
var headers = new fetch.Headers()
var launcher_name = "IA Launcher"
var launcher_url = "http://infinity-alex.fun:8080/modpack/1.8.9"
var launcher_version = "IA Launcher"
var arrayFiles = {
file: []
}
t.events = downloader.events
t.setLauncher = function setLauncher(name, url, version) {
launcher_name = name;
launcher_url = url;
launcher_version = version;
};
t.getLauncher = function getLauncher() {
return {
name: launcher_name,
url: launcher_url,
version: launcher_version
};
};
t.start = function start(redownload, p) {
headers.set('User-Agent', `[CPD_CLIENT] Version: ${require('./package.json').version}, ${t.getLauncher().name} v${t.getLauncher().version} (launcher)`)
downloader.events.emit("started", "[CPD] Fetching...")
fetch(`${t.getLauncher().url}modpack/${t.getLauncher().version}`, { method: "GET", headers: headers })
.then(res => res.json())
.then((json) => {
console.log(`${t.getLauncher().url}modpack/${t.getLauncher().version}`)
try {
for (var i = 0; i < json.file.length; i++) {
var obj = json.file[i];
arrayFiles.file.push(trim(obj));
if (redownload === false) {
if (fs.existsSync(`./${arrayFiles.file[i]}/${getFileName(json.file[i])}`)) {
t.events.emit("download", { type: "file_err", error: "[CPD] File already exist !!" })
} else {
downloader.download(json.file[i], `${p}/${arrayFiles.file[i]}`)
console.log(p)
}
} else if (redownload === true) {
downloader.download(json.file[i], `${p}/${arrayFiles.file[i]}`)
} else {
return "[CPD] Error : 'redownload' is boolean paramter"
}
}
} catch (error) {
t.events.emit("download", { type: "url_err", error: "[CPD] This versions does not exist in cpd_server" })
}
});
}
function trim(str) {
if (typeof str !== 'string') {
throw new Error('only string parameter supported!');
}
var regex = new RegExp(`${t.getLauncher().url}update/`, "g");
var a = str.replace(regex, '');
if (str.includes("forge.jar")) {
return `${a.toString().slice(0, a.lastIndexOf('/'))}/`
} else {
return `${a.toString().slice(0, a.lastIndexOf('/'))}`
}
}
function getFileName(fileURL) {
return fileURL.substring(fileURL.lastIndexOf('/') + 1)
}