epha-robot
Version:
Fetching, cleaning, transforming of pharmaceutical data from public resources
59 lines (48 loc) • 1.71 kB
JavaScript
;
var defaultLog = require("../index").log;
var disk = require("../common/disk");
var fetchServerFileSize = require("./fetchServerFileSize");
/**
* Resolves with true if a refresh is needed.
*
* @param {String} jobName
* @param {{download: {file: String, url: String, linkParser: ReqExp}}} cfg
* @param {Log|console} log - optional
* @returns {Promise}
*/
function compareFileSize(jobName, cfg, log) {
log = log || defaultLog;
return new Promise(function (resolve, reject) {
log.info(jobName, "Check if " + cfg.download.file + " exists.");
disk.fileExists(cfg.download.file)
.then(function (fileExists) {
if (!fileExists) {
log.warn(jobName, cfg.download.file + " hasn't been download yet.");
return[{size: true}, {size: false}];
}
log.info(jobName, "Read and fetch file stats from disk and server.");
return Promise.all([
disk.read.stats(cfg.download.file),
fetchServerFileSize(cfg.download.url, cfg.download.linkParser)
]);
})
.then(function (data) {
var downloadedFileSize = data[0].size;
var serverFileSize = data[1].size;
log.info(jobName, "Fetched file stats from server.");
log.info(jobName, "Comparing disk and server stats now.");
if (downloadedFileSize === serverFileSize) {
log.warn(jobName, "File on disk is up-to-date");
resolve(false);
} else {
log.warn(jobName, "There is a newer file on the server");
resolve(true);
}
})
.catch(function (err) {
log.error(jobName, err);
reject(err);
});
});
}
module.exports = compareFileSize;