1 | "use strict";
|
2 |
|
3 | function 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 |
|
165 | exports.init = init;
|