Skip to content

Commit e840544

Browse files
committed
dev: DRY destination node handling
1 parent 6b6c295 commit e840544

File tree

3 files changed

+32
-31
lines changed

3 files changed

+32
-31
lines changed

src/backend/src/routers/writeFile.js

+26-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,31 @@ module.exports = eggspress('/writeFile', {
8585
if(owner_user.suspended)
8686
return res.status(401).send({error: 'Account suspended'});
8787

88-
const db = req.services.get('database').get(DB_WRITE, 'filesystem');
88+
const writeFile_handler_api = {
89+
async get_dest_node () {
90+
if(!req.body.destination_write_url){
91+
res.status(400).send({
92+
error:{
93+
message: 'No destination specified.'
94+
}
95+
});
96+
return;
97+
}
98+
try{
99+
validate_signature_auth(req.body.destination_write_url, 'write');
100+
}catch(e){
101+
res.status(403).send(e);
102+
return;
103+
}
104+
try {
105+
return await (new FSNodeParam('dest_path')).consolidate({
106+
req, getParam: () => req.body.dest_path ?? req.body.destination_uid
107+
});
108+
} catch (e) {
109+
res.status(500).send('Internal Server Error');
110+
}
111+
}
112+
};
89113

90114
const writeFile_handlers = require('./writeFile/writeFile_handlers.js');
91115
if ( writeFile_handlers.hasOwnProperty(req.query.operation) ) {
@@ -98,6 +122,7 @@ module.exports = eggspress('/writeFile', {
98122

99123
return await Context.get().sub({ actor: Actor.adapt(user) }).arun(async () => {
100124
return await writeFile_handlers[req.query.operation]({
125+
api: writeFile_handler_api,
101126
req, res, actor,
102127
node,
103128
});

src/backend/src/routers/writeFile/copy.js

+3-19
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,19 @@ const { HLCopy } = require('../../filesystem/hl_operations/hl_copy');
33
const { validate_signature_auth } = require('../../helpers');
44

55
module.exports = async function writeFile_handle_copy ({
6+
api,
67
req, res, actor, node,
78
}) {
89

910
// check if destination_write_url provided
10-
if(!req.body.destination_write_url){
11-
return res.status(400).send({
12-
error:{
13-
message: 'No destination specified.'
14-
}
15-
})
16-
}
1711

1812
// check if destination_write_url is valid
19-
try{
20-
validate_signature_auth(req.body.destination_write_url, 'write');
21-
}catch(e){
22-
console.log('REALLY THIS ONE')
23-
return res.status(403).send(e);
24-
}
13+
const dest_node = await api.get_dest_node();
14+
if ( ! dest_node ) return;
2515

2616
const overwrite = req.body.overwrite ?? false;
2717
const change_name = req.body.auto_rename ?? false;
2818

29-
// TODO: [fs:operation:param-coercion]
30-
const dest_node = await (new FSNodeParam('dest_path')).consolidate({
31-
req, getParam: () => req.body.dest_path ?? req.body.destination_uid
32-
});
33-
34-
// Get user
3519
const opts = {
3620
source: node,
3721
destination_or_parent: dest_node,

src/backend/src/routers/writeFile/move.js

+3-11
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const { HLMove } = require("../../filesystem/hl_operations/hl_move");
33
const { validate_signature_auth } = require("../../helpers");
44

55
module.exports = async function writeFile_handle_move ({
6+
api,
67
req, res, actor, node,
78
}) {
89
// check if destination_write_url provided
@@ -14,20 +15,11 @@ module.exports = async function writeFile_handle_move ({
1415
})
1516
}
1617

17-
// check if destination_write_url is valid
18-
try{
19-
validate_signature_auth(req.body.destination_write_url, 'write');
20-
}catch(e){
21-
return res.status(403).send(e);
22-
}
18+
const dest_node = await api.get_dest_node();
19+
if ( ! dest_node ) return;
2320

2421
const hl_move = new HLMove();
2522

26-
// TODO: [fs:operation:param-coercion]
27-
const dest_node = await (new FSNodeParam('dest_path')).consolidate({
28-
req, getParam: () => req.body.dest_path ?? req.body.destination_uid
29-
});
30-
3123
const opts = {
3224
user: actor.type.user,
3325
source: node,

0 commit comments

Comments
 (0)