cookieParser = require('cookie-parser'),
lastMile = require('connect-lastmile'),
multipart = require('./src/multipart'),
+ mkdirp = require('mkdirp'),
auth = require('./src/auth.js'),
files = require('./src/files.js')(path.resolve(__dirname, process.argv[2] || 'files'));
var host = server.address().address;
var port = server.address().port;
+ var basePath = path.resolve(__dirname, process.argv[2] || 'files');
+ mkdirp.sync(basePath);
+
console.log('Surfer listening at http://%s:%s', host, port);
- console.log('Using base path', path.resolve(__dirname, process.argv[2] || 'files'));
+ console.log('Using base path', basePath);
});
\ No newline at end of file
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) {
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) {
}
function getAbsolutePath(filePath) {
- var absoluteFilePath = path.resolve(gBasePath, filePath);
+ var absoluteFilePath = path.resolve(path.join(gBasePath, filePath));
if (absoluteFilePath.indexOf(gBasePath) !== 0) return null;
return absoluteFilePath;
debug('get', absoluteFilePath);
if (result.isFile()) return res.sendFile(absoluteFilePath);
- if (result.isDirectory()) return res.status(200).send({ entries: fs.readdirSync(absoluteFilePath) });
+ if (result.isDirectory()) return res.status(222).send({ entries: fs.readdirSync(absoluteFilePath) });
return next(new HttpError(500, 'unsupported type'));
});