mountainlab
Version:
MountainLab data analysis environment
205 lines (190 loc) • 5.04 kB
JavaScript
exports.cmd_prv_locate = cmd_prv_locate;
exports.cmd_prv_create = cmd_prv_create;
exports.cmd_prv_download = cmd_prv_download;
exports.cmd_read_dir = cmd_read_dir;
exports.prv_locate = prv_locate;
exports.prv_create = prv_create;
exports.prv_download = prv_download;
exports.read_dir = read_dir;
exports.compute_file_sha1 = compute_file_sha1;
var common = require(__dirname + '/common.js');
var db_utils = require(__dirname + '/db_utils.js');
var sha1 = require('node-sha1');
var url_exists = require('url-exists');
var async = require('async');
var request = require('request');
const KBClient = require('kbclient').v1;
function cmd_prv_locate(prv_fname, opts, callback) {
prv_locate(prv_fname, opts, function(err, path) {
if (err) {
callback(err);
return;
}
if (path) {
console.info(path);
callback('', path);
return;
} else {
console.error('Unable to locate file.');
callback(null, path);
return;
}
});
}
function cmd_prv_create(fname, prv_fname_out, opts, callback) {
if (!prv_fname_out) prv_fname_out = fname + '.prv';
if ((!opts.stat) && (!opts.sha1))
console.info('Creating prv record for file ... : ' + fname);
prv_create(fname, function(err, obj) {
if (err) {
console.error(err);
callback(err);
return;
}
if (obj) {
if (opts.stat) {
console.info(JSON.stringify(obj, null, 4));
callback('', obj);
return;
}
if (opts.sha1) {
console.info(obj.original_checksum);
callback('', obj.original_checksum);
return;
}
console.info('Writing prv file ... : ' + prv_fname_out);
if (common.write_text_file(prv_fname_out, JSON.stringify(obj, null, 4))) {
console.info('Done.')
} else {
var err = 'Unable to write output file.';
console.error(err);
callback(err);
return;
}
callback('', obj);
return;
} else {
var err = 'Unable to create prv object.';
console.error(err);
callback(err);
return;
}
});
}
function cmd_prv_download(prv_fname, output_filename, opts, callback) {
if (output_filename) opts.output = output_filename;
prv_download(prv_fname, opts, function(err, path) {
if (err) {
console.error(`Error downloading: ${err}`);
callback(err);
return;
}
if (path) {
callback(null, path);
return;
} else {
callback('Unexpected: path is empty in cmd_prv_download.');
return;
}
});
}
function cmd_read_dir(directory, opts, callback) {
read_dir(directory, opts, function(err, result) {
if (err) {
callback(err);
return;
}
console.info(JSON.stringify(result,null,4));
callback(null);
});
}
function prv_download(prv_fname, opts, callback) {
let KBC=new KBClient();
if (opts.output) {
KBC.downloadFile(prv_fname, opts.output)
.then(function() {
callback(null, opts.output);
})
.catch(function(err) {
callback('Error downloading file: ' + err.message);
});
}
else {
KBC.realizeFile(prv_fname, {})
.then(function(path2) {
callback(null, path2);
})
.catch(function(err) {
callback('Error realizing file: ' + err.message);
});
}
}
function prv_locate(prv_fname, opts, callback) {
let KBC=new KBClient();
let opts2={};
if ('remote_only' in opts)
opts2.remote_only=true;
if ('download' in opts) {
supress_console_info();
KBC.realizeFile(prv_fname, opts2)
.then(function(url2) {
restore_console_info();
callback(null, url2, null);
})
.catch(function(err) {
restore_console_info();
callback('Error locating file: ' + err.message);
});
} else {
supress_console_info();
KBC.locateFile(prv_fname, opts2)
.then(function(url2) {
restore_console_info();
callback(null, url2, null);
})
.catch(function(err) {
restore_console_info();
callback('Error locating file: ' + err.message);
});
}
}
function read_dir(directory, opts, callback) {
let KBC=new KBClient();
let opts2={};
supress_console_info();
KBC.readDir(directory,opts2)
.then(function(result) {
restore_console_info();
callback(null,result);
})
.catch(function(err) {
restore_console_info();
callback(err);
});
}
let hold_console_info = console.info;
function supress_console_info() {
console.info = function() {};
}
function restore_console_info() {
console.info = hold_console_info;
}
function prv_create(fname, callback) {
let KBC=new KBClient();
KBC.prvCreate(fname, {})
.then(function(obj) {
callback(null, obj);
})
.catch(function(err) {
callback(err.message);
});
}
function compute_file_sha1(fname, callback) {
prv_create(fname, function(err,obj) {
if (err) {
callback(err);
return;
}
callback(null, obj.original_checksum);
});
}