selfdebrid/test.js
2022-08-17 20:42:26 -04:00

68 lines
2.3 KiB
JavaScript

const selfdebrid = require("./package");
const axios = require("axios");
start();
async function start() {
console.log(`[tester] Beginning testing on selfdebrid.`);
let extractors = await selfdebrid.getAllExtractors();
console.log(`[tester] Got ${extractors.length} extractors. Beginning testing...`);
for (let i in extractors) {
let extractor = require(extractors[i]);
let extractorName = extractors[i].split(`/extractors/`)[extractors[i].split(`/extractors/`).length - 1];
if (extractor.tests?.length !== 0) {
for (let index in extractor.tests) {
console.log(`\n[tester/${extractorName}] Testing URL:`, extractor.tests[index]);
try {
let test = await extractor.get(extractor.tests[index], {allowForceLogs: true, debug: true});
let valid = await isValidResult(test);
if (valid.isValid == true) console.log(`[tester/${extractorName}] Valid data from extractor "${extractorName}"! Yay!`);
else console.log(`[tester/${extractorName}] Inalid data from extractor "${extractorName}"! Aww :/`, valid);
} catch(err) {
console.log(`[tester/${extractorName}] Extractor/validation process gave error:`, err);
} finally {
continue;
}
}
} else {
console.log(`\n[tester] Skipped extractor "${extractorName}" due to lack of tests.`);
continue;
}
}
console.log(`\n[tester] Testing complete!`)
process.exit();
}
async function isValidResult(data) {
if (
data.metadata &&
data.metadata.fileName
) {
if (
data.axiosData &&
data.axiosData.url
) {
data.axiosData.responseType = "stream";
data.axiosData.validateStatus = function() {return true};
let {headers} = await axios(data.axiosData);
if (headers?.["content-type"]) {
if (headers?.["content-type"] !== "text/html") return {isValid: true};
else return {isValid: false, message: "Response type is text/html, likely an invalid URL."};
} else return {isValid: false, message: "Odd server response, likely an invalid URL."};
} else {
return {
isValid: false,
message: "Missing data to download with."
};
}
} else {
return {
isValid: false,
message: "Missing metadata."
};
}
}