Return folders and files when fetching a mod

This commit is contained in:
Björn Dahlgren 2014-04-06 01:10:09 +00:00
parent 2841f4c9dc
commit 7d11af4633
2 changed files with 50 additions and 4 deletions

View File

@ -6,6 +6,7 @@
"dependencies": {
"express": "3.x",
"slug": "~0.4.0",
"express-resource": "~1.0.0"
"express-resource": "~1.0.0",
"when": "~3.1.0"
}
}

View File

@ -1,7 +1,47 @@
var fs = require('fs');
var fs = require('fs')
, path = require('path')
, when = require('when')
, nodefn = require('when/node/function');
var config = require('./../config');
function walk (directory) {
createFile = function (file, stat) {
return {
type: "file",
name: file,
size: stat.size
};
};
createFolder = function (folder) {
return {
type: "folder",
name: folder,
files: []
};
};
var results = [];
return when.map(nodefn.call(fs.readdir, directory), function(file) {
var absolutePath = path.join(directory, file);
return nodefn.call(fs.stat, absolutePath).then(function(stat) {
if (stat.isFile()) {
return results.push(createFile(file, stat));
}
folder = createFolder(file);
return walk(absolutePath).then(function(filesInDir) {
folder.files = filesInDir;
results.push(folder);
});
});
}).then(function() {
return results;
});
};
exports.index = function(req, res){
fs.readdir(config.path, function (err, files) {
if (err) {
@ -22,9 +62,14 @@ exports.create = function(req, res){
};
exports.show = function(req, res){
res.send('show mod ' + req.params.mod);
walk(config.path + "/" + req.params.mod).then(function(files) {
res.json(files);
}).otherwise(function(error) {
console.error(error.stack || error);
res.send({success: false});
});
};
exports.destroy = function(req, res){
res.send('destroy mod ' + req.params.mod);
};
};