3 Commits 7c0d8fbead ... 6516fa8161

Author SHA1 Message Date
  James Peret 6516fa8161 Folder listing fixes 6 years ago
  James Peret 82c7e3bed6 changed packaged version for npm 6 years ago
  James Peret 4f3a4974de Added API for listing folder contents 6 years ago
2 changed files with 36 additions and 2 deletions
  1. 35 1
      index.js
  2. 1 1
      package.json

+ 35 - 1
index.js

@@ -88,6 +88,33 @@ var buildFilename = function(path, filename){
88 88
   return path + "/" + filename
89 89
 }
90 90
 
91
+var list_folder = function(req, res){
92
+  var path = getPath(req);
93
+  var file_type = "";
94
+  var parts;
95
+  var extension;
96
+  var folder_content = [];
97
+  // Path is file or folder
98
+  if(!isFile(req.params['file']) && req.params['file'] != undefined){
99
+    path = path + "./" + req.params['file'] + "/";
100
+  }
101
+  if(path == "" || path == "undefined"){
102
+    path = "./";
103
+  }
104
+  console.log("Listing folder: " + path);
105
+  fs.readdir(path, function(err, files) {
106
+    if(files != null){
107
+      files.forEach(function(file) {
108
+        folder_content.push(file);
109
+      });
110
+      res.json({ files: folder_content });
111
+    } else {
112
+      res.json({ files: [] });
113
+    }
114
+
115
+  })
116
+}
117
+
91 118
 var get_file = function(req, res){
92 119
 
93 120
   var path = getPath(req);
@@ -222,14 +249,21 @@ var url_paths = [
222 249
   '/:folder_10/:folder_9/:folder_8/:folder_7/:folder_6/:folder_5/:folder_4/:folder_3/:folder_2/:folder_1/:file'
223 250
 ]
224 251
 
252
+// Get file
225 253
 for (var i = 0; i < url_paths.length; i++) {
226 254
   app.get(url_paths[i], function (req, res) {
227
-    get_file(req, res);
255
+    if(req.query.list == "true"){
256
+      list_folder(req, res);
257
+    } else {
258
+      get_file(req, res);
259
+    }
228 260
   })
229 261
 }
230 262
 
263
+// Write file content
231 264
 for (var i = 0; i < url_paths.length; i++) {
232 265
   app.post(url_paths[i], function (req, res) {
266
+    console.log("Writing file: " + url_paths[i]);
233 267
     write_file(req, res);
234 268
   })
235 269
 }

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
1 1
 {
2 2
   "name": "@jamesperet/codex-server",
3
-  "version": "0.1.1",
3
+  "version": "0.1.3",
4 4
   "description": "A node file server with super powers.",
5 5
   "main": "index.js",
6 6
   "scripts": {