discord-ghost
Version:
A headless Discord-RPC client for Destiny 2
93 lines (86 loc) • 2.26 kB
JavaScript
/* eslint-disable @typescript-eslint/no-var-requires */
const fs = require("fs");
const https = require("https");
function upload(url) {
return new Promise((accept, reject) => {
const file = fs.readFileSync("windows.zip", { encoding: null });
const options = {
method: "PUT",
headers: {
"Content-Type": "application/zip",
"Content-Length": file.length,
Authorization: `Basic ${Buffer.from("louis-bompart:" + process.argv[2]).toString("base64")}`
}
};
const data = [];
const request = https.request(url, options, response => {
response.on("data", chunk => data.push(chunk));
response.on("end", () =>
accept({
headers: response.headers,
statusCode: response.statusCode,
data: Buffer.concat(data)
})
);
});
request.on("error", err => reject(err));
request.write(file);
request.end();
});
}
function delay(t, val) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve(val);
}, t);
});
}
async function getUploadURL() {
return new Promise(resolve => {
const req = https.request(
"https://api.github.com/repos/brakacai/discord-ghost/releases/latest",
{
headers: {
"User-Agent": "Brakacai Build"
}
},
function(res) {
const chunks = [];
res.on("data", function(chunk) {
chunks.push(chunk);
});
res.on("end", function() {
const body = Buffer.concat(chunks);
resolve(JSON.parse(body.toString()));
});
}
);
req.end();
});
}
(async function() {
try {
let url;
let attempt = 0;
let done = false;
while (!done) {
try {
attempt++;
const urlRep = await getUploadURL();
console.log(JSON.stringify(urlRep));
url = urlRep["upload_url"].replace("{?name,label}", "?name=windows.zip");
done = true;
} catch (error) {
if (attempt > 10) {
throw error;
}
await delay(1e3);
}
}
const response = await upload(url);
console.log(response);
console.log("Completed upload!");
} catch (error) {
console.log(error);
}
})();