From: Johannes Zellner Date: Tue, 1 Mar 2016 12:14:45 +0000 (+0100) Subject: Send more folder listing details X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2FNodejs%2FSurfer.git;a=commitdiff_plain;h=130809800e6e3fa33e5fc207dd6e1d963231f2a9 Send more folder listing details --- diff --git a/cli/actions.js b/cli/actions.js index 8a8624e..6f8faea 100644 --- a/cli/actions.js +++ b/cli/actions.js @@ -153,9 +153,9 @@ function get(filePath) { if (!files || files.entries.length === 0) { console.log('No files on the server. Use %s to upload some.', 'surfer put '.yellow); } else { - console.log('Files:'); + console.log('Entries:'); files.entries.forEach(function (entry) { - console.log('\t %s', entry); + console.log('\t %s', entry.isDirectory ? entry.filePath + '/' : entry.filePath); }); } } else { diff --git a/src/files.js b/src/files.js index 2214449..520127d 100644 --- a/src/files.js +++ b/src/files.js @@ -1,6 +1,7 @@ 'use strict'; -var fs = require('fs'), +var async = require('async'), + fs = require('fs'), path = require('path'), rm = require('del'), debug = require('debug')('files'), @@ -74,10 +75,28 @@ function get(req, res, next) { debug('get', absoluteFilePath); + if (!result.isDirectory() && !result.isFile()) return next(new HttpError(500, 'unsupported type')); if (result.isFile()) return res.sendFile(absoluteFilePath); - if (result.isDirectory()) return res.status(222).send({ entries: fs.readdirSync(absoluteFilePath) }); - return next(new HttpError(500, 'unsupported type')); + async.map(fs.readdirSync(absoluteFilePath), function (filePath, callback) { + fs.stat(path.join(absoluteFilePath, filePath), function (error, result) { + if (error) return callback(error); + + callback(null, { + isDirectory: result.isDirectory(), + isFile: result.isFile(), + atime: result.atime, + mtime: result.mtime, + ctime: result.ctime, + birthtime: result.birthtime, + size: result.size, + filePath: filePath + }); + }); + }, function (error, results) { + if (error) return next(new HttpError(500, error)); + res.status(222).send({ entries: results }); + }); }); }