UNPKG

4.22 kBJavaScriptView Raw
1"use strict";
2
3function init(srv) {
4 var fs = srv.fileSystem;
5
6 function stat(req, callback) {
7 fs.resolvePath(req, srv, function (err, path) {
8 if (err) {
9 return callback({ err: err });
10 }
11
12 fs.stat(path, function (err, stats) {
13 callback(err ? { err: err } : { stats: stats });
14 });
15 });
16 }
17
18 function readdir(req, callback) {
19 fs.resolvePath(req, srv, function (err, path) {
20 if (err) {
21 return callback({ err: err });
22 }
23
24 fs.readdir(path, function (err, files) {
25 callback({ err: err, contents: files });
26 });
27 });
28 }
29
30 function mkdir(req, callback) {
31 fs.resolvePath(req.path, srv, function (err, path) {
32 if (err) {
33 return callback(err);
34 }
35
36 fs.mkdir(path, req.mode, callback);
37 });
38 }
39
40 function rename(req, callback) {
41 fs.resolvePath(req.oldPath, srv, function (err, oldPath) {
42 if (err) {
43 return callback(err);
44 }
45 fs.resolvePath(req.newPath, srv, function (err, newPath) {
46 if (err) {
47 return callback(err);
48 }
49
50 fs.rename(oldPath, newPath, callback);
51 });
52 });
53 }
54
55 function readFile(req, callback) {
56 fs.resolvePath(req.path, srv, function (err, path) {
57 if (err) {
58 return callback({ err: err });
59 }
60
61 fs.readFile(path, req.encoding, function (err, data) {
62 callback({ err: err, data: data });
63 });
64 });
65 }
66
67 function writeFile(req, callback) {
68 fs.resolvePath(req.path, srv, function (err, path) {
69 if (err) {
70 return callback(err);
71 }
72
73 fs.writeFile(path, req.data, req.encoding, callback);
74 });
75 }
76
77 function unlink(req, callback) {
78 fs.resolvePath(req, srv, function (err, path) {
79 if (err) {
80 return callback(err);
81 }
82
83 fs.unlink(path, callback);
84 });
85 }
86
87 function moveToTrash(req, callback) {
88 fs.resolvePath(req, srv, function (err, path) {
89 if (err) {
90 return callback(err);
91 }
92
93 fs.moveToTrash(path, callback);
94 });
95 }
96
97 function watchPath(req, callback) {
98 fs.resolvePath(req, srv, function (err, path) {
99 if (err) {
100 return callback(err);
101 }
102
103 fs.watchPath(path, callback);
104 });
105 }
106
107 function unwatchPath(req, callback) {
108 fs.resolvePath(req, srv, function (err, path) {
109 if (err) {
110 return callback(err);
111 }
112
113 fs.unwatchPath(path, callback);
114 });
115 }
116
117 function unwatchAll(req, callback) {
118 fs.resolvePath(req, srv, function (err, path) {
119 if (err) {
120 return callback(err);
121 }
122
123 fs.unwatchAll(path, callback);
124 });
125 }
126
127 function copyFile(req, callback) {
128 fs.resolvePath(req.src, srv, function (err, src) {
129 if (err) {
130 return callback(err);
131 }
132 fs.resolvePath(req.dest, srv, function (err, dest) {
133 if (err) {
134 return callback(err);
135 }
136
137 fs.rename(src, dest, callback);
138 });
139 });
140 }
141
142 function onConnection (socket) {
143 socket.emit("greeting", "hi");
144
145 socket
146 .on("stat", stat)
147 .on("mkdir", mkdir)
148 .on("readdir", readdir)
149 .on("rename", rename)
150 .on("readFile", readFile)
151 .on("writeFile", writeFile)
152 .on("unlink", unlink)
153 .on("moveToTrash", moveToTrash)
154 .on("watchPath", watchPath)
155 .on("unwatchPath", unwatchPath)
156 .on("unwatchAll", unwatchAll)
157 .on("copyFile", copyFile);
158 }
159
160 srv.io
161 .of(srv.httpRoot)
162 .on("connection", onConnection);
163}
164
165exports.init = init;