68 lines
2.3 KiB
JavaScript
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."
|
|
};
|
|
}
|
|
} |