]>
git.immae.eu Git - perso/Immae/Projets/Nodejs/Surfer.git/blob - app/js/app.js
11581b66fe21f00d82d1188d6344541a79e13af0
4 function login(username
, password
) {
5 username
= username
|| app
.loginData
.username
;
6 password
= password
|| app
.loginData
.password
;
10 superagent
.get('/api/files/').query({ username: username
, password: password
}).end(function (error
, result
) {
13 if (error
) return console
.error(error
);
14 if (result
.statusCode
=== 401) return console
.error('Invalid credentials');
16 app
.session
.valid
= true;
17 app
.session
.username
= username
;
18 app
.session
.password
= password
;
20 // clearly not the best option
21 localStorage
.username
= username
;
22 localStorage
.password
= password
;
24 loadDirectory(app
.path
);
29 app
.session
.valid
= false;
30 app
.session
.username
= username
;
31 app
.session
.password
= password
;
33 delete localStorage
.username
;
34 delete localStorage
.password
;
37 function sanitize(filePath
) {
38 filePath
= '/' + filePath
;
39 return filePath
.replace(/\/+/g, '/');
42 function encode(filePath
) {
43 return filePath
.split('/').map(encodeURIComponent
).join('/');
47 loadDirectory(app
.path
);
50 function loadDirectory(filePath
) {
53 filePath
= filePath
? sanitize(filePath
) : '/';
55 console
.log(filePath
);
57 superagent
.get('/api/files/' + filePath
).query({ username: app
.session
.username
, password: app
.session
.password
}).end(function (error
, result
) {
60 if (error
) return console
.error(error
);
61 if (result
.statusCode
=== 401) return logout();
63 app
.entries
= result
.body
.entries
;
65 app
.pathParts
= filePath
.split('/').filter(function (e
) { return !!e
; });
69 function open(entry
) {
70 var path
= sanitize(app
.path
+ '/' + entry
.filePath
);
72 if (entry
.isDirectory
) return loadDirectory(path
);
78 loadDirectory(app
.path
.split('/').slice(0, -1).filter(function (p
) { return !!p
; }).join('/'));
82 $(app
.$els
.upload
).on('change', function () {
85 // detach event handler
86 $(app
.$els
.upload
).off('change');
88 var file
= app
.$els
.upload
.files
[0];
89 var path
= encode(sanitize(app
.path
+ '/' + file
.name
));
91 var formData
= new FormData();
92 formData
.append('file', file
);
94 superagent
.put('/api/files' + path
).query({ username: app
.session
.username
, password: app
.session
.password
}).send(formData
).end(function (error
, result
) {
97 if (error
) return console
.error(error
);
98 if (result
.statusCode
!== 201) return console
.error('Error uploading file: ', result
.statusCode
);
104 app
.$els
.upload
.click();
107 function delAsk(entry
) {
108 $('#modalDelete').modal('show');
109 app
.deleteData
= entry
;
112 function del(entry
) {
115 var path
= encode(sanitize(app
.path
+ '/' + entry
.filePath
));
117 superagent
.del('/api/files' + path
).query({ username: app
.session
.username
, password: app
.session
.password
, recursive: true }).end(function (error
, result
) {
120 if (error
) return console
.error(error
);
121 if (result
.statusCode
!== 200) return console
.error('Error deleting file: ', result
.statusCode
);
125 $('#modalDelete').modal('hide');
129 function createDirectoryAsk() {
130 $('#modalcreateDirectory').modal('show');
131 app
.createDirectoryData
= '';
134 function createDirectory(name
) {
137 var path
= encode(sanitize(app
.path
+ '/' + name
));
139 superagent
.put('/api/files' + path
).query({ username: app
.session
.username
, password: app
.session
.password
, directory: true }).end(function (error
, result
) {
142 if (error
) return console
.error(error
);
143 if (result
.statusCode
!== 201) return console
.error('Error creating directory: ', result
.statusCode
);
145 app
.createDirectoryData
= '';
148 $('#modalcreateDirectory').modal('hide');
152 Vue
.filter('prettyDate', function (value
) {
153 var d
= new Date(value
);
154 return d
.toDateString();
168 createDirectoryData: '',
174 loadDirectory: loadDirectory
,
180 createDirectoryAsk: createDirectoryAsk
,
181 createDirectory: createDirectory
185 login(localStorage
.username
, localStorage
.password
);