readlineSync = require('readline-sync'),
async = require('async'),
fs = require('fs'),
+ request = require('request'),
url = require('url'),
path = require('path');
gQuery = { username: config.username(), password: config.password() };
- console.log('Using server %s', config.server().yellow);
+ console.error('Using server %s', config.server().yellow);
}
function collectFiles(filesOrFolders) {
var tmp = url.parse(uri);
if (!tmp.host) tmp = url.parse('https://' + uri);
- var server = 'https://' + tmp.host;
+ var server = tmp.protocol + '//' + tmp.host;
- console.log('Using server', server);
+ console.log('Using server', server.bold);
var username = readlineSync.question('Username: ', { hideEchoBack: false });
var password = readlineSync.question('Password: ', { hideEchoBack: true });
superagent.get(server + API + '/').query({ username: username, password: password }).end(function (error, result) {
if (error && error.code === 'ENOTFOUND') {
- console.log('No such server %s'.red, server);
+ console.log('No such server %s'.red, server.bold);
+ process.exit(1);
+ }
+ if (error.code) {
+ console.log('Failed to connect to server %s'.red, server.bold, error.code);
process.exit(1);
}
if (result.status === 401) {
- console.log('Login failed.');
+ console.log('Login failed.'.red);
process.exit(1);
}
gQuery = { username: username, password: password };
- console.log('Done'.green);
+ console.log('Ok'.green);
});
}
function get(filePath) {
checkConfig();
- superagent.get(config.server() + API + filePath).query(gQuery).end(function (error, result) {
- if (error && error.status === 401) return console.log('Login failed');
- if (error && error.status === 404) return console.log('No such file or directory');
- if (error) return console.log('Failed', result ? result.body : error);
+ // if no argument provided, fetch root
+ filePath = filePath || '/';
+
+ request.get(config.server() + API + filePath, { qs: gQuery }, function (error, result, body) {
+ if (error) return console.error(error);
+ if (result.statusCode === 401) return console.log('Login failed');
+ if (result.statusCode === 404) return console.log('No such file or directory');
- if (result.body && result.body.entries) {
+ // 222 indicates directory listing
+ if (result.statusCode === 222) {
console.log('Files:');
- result.body.entries.forEach(function (entry) {
+ JSON.parse(body).entries.forEach(function (entry) {
console.log('\t %s', entry);
});
} else {
- console.log(result.text);
+ console.log(body);
}
});
+ // var req = superagent.get(config.server() + API + filePath);
+ // req.query(gQuery);
+ // req.end(function (error, result) {
+ // if (error && error.status === 401) return console.log('Login failed');
+ // if (error && error.status === 404) return console.log('No such file or directory');
+ // if (error) return console.log('Failed', result ? result.body : error);
+
+ // if (result.body && result.body.entries) {
+ // console.log('Files:');
+ // result.body.entries.forEach(function (entry) {
+ // console.log('\t %s', entry);
+ // });
+ // } else {
+ // req.pipe(process.stdout);
+ // }
+ // });
}
function del(filePath) {