materials-cli
Version:
CLI for Imperial Materials
28 lines (27 loc) • 1.2 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.downloadURL = void 0;
const axios_1 = __importDefault(require("axios"));
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
function downloadURL(folderPath, courseName, resource) {
const fullFolderPath = path_1.default.join(folderPath, courseName, resource.category);
fs_1.default.mkdirSync(fullFolderPath, { recursive: true });
const filePath = path_1.default.join(folderPath, courseName, resource.category, resource.title + ".pdf");
if (!fs_1.default.existsSync(filePath)) {
return axios_1.default.get(resource.path, {
responseType: "stream"
}).then((response) => {
const stream = response.data.pipe(fs_1.default.createWriteStream(filePath));
return new Promise((resolve, reject) => {
stream.on("finish", () => {
return resolve(true);
});
});
});
}
}
exports.downloadURL = downloadURL;