anyfetch-file-watcher
Version:
Watch for file changes, and send them to anyFetch.
64 lines (56 loc) • 1.63 kB
JavaScript
var watch = require('watch');
var os = require('os');
var queues = require('./helpers/upload');
var pushToUploadQueue = queues.pushToUploadQueue;
var pushToDeleteQueue = queues.pushToDeleteQueue;
var cursor = require('./helpers/cursor');
var watcher = function(accessToken) {
console.log("WATCHING ", GLOBAL.WATCHED_DIR);
watch.createMonitor(GLOBAL.WATCHED_DIR, {skipUnreadableDir: true}, function(monitor) {
monitor.on("created", function(file, stat) {
var task = {
filePath: file,
creationDate: stat.ctime,
modificationDate: stat.mtime,
accessToken: accessToken,
baseIdentifier: os.hostname()
};
pushToUploadQueue(task);
cursor.addOrUpdateFiles({file: stat.mtime}, function(err){
if(err) {
console.warn(err);
}
});
});
monitor.on("changed", function(file, current) {
var task = {
filePath: file,
creationDate: current.ctime,
modificationDate: current.mtime,
accessToken: accessToken,
baseIdentifier: os.hostname()
};
pushToUploadQueue(task);
cursor.addOrUpdateFiles({file: current.mtime}, function(err){
if(err) {
console.warn(err);
}
});
});
monitor.on("removed", function(file) {
var task = {
filePath: file,
accessToken: accessToken,
baseIdentifier: os.hostname()
};
pushToDeleteQueue(task);
cursor.removeFiles(file, function(err){
if(err) {
console.warn(err);
}
});
});
});
};
module.exports = watcher;
;