]> git.immae.eu Git - perso/Immae/Projets/Nodejs/Surfer.git/commitdiff
Send more folder listing details
authorJohannes Zellner <johannes@nebulon.de>
Tue, 1 Mar 2016 12:14:45 +0000 (13:14 +0100)
committerJohannes Zellner <johannes@nebulon.de>
Tue, 1 Mar 2016 12:14:45 +0000 (13:14 +0100)
cli/actions.js
src/files.js

index 8a8624e345d3354348c3834ed5b0bdbb818a3869..6f8faea3de72259668c8b0c5eb7f1cff3e72fed3 100644 (file)
@@ -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 <file>'.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 {
index 2214449042f5d9cb52a0a849c8f17a8820bc1281..520127dc7826502dbea5baeddabc531c0924935f 100644 (file)
@@ -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 });
+        });
     });
 }