bug fixes for custom handlers

This commit is contained in:
zadam 2019-01-27 15:47:40 +01:00
parent fb27088fcd
commit b39f6ef7ad
3 changed files with 26 additions and 11 deletions

View File

@ -97,7 +97,7 @@ function AttributesModel() {
await showAttributes(attributes); await showAttributes(attributes);
// attribute might not be rendered immediatelly so could not focus // attribute might not be rendered immediatelly so could not focus
setTimeout(() => $(".attribute-type-select:last").focus(), 100); setTimeout(() => $(".attribute-type-select:last").focus(), 1000);
}; };
this.deleteAttribute = function(data, event) { this.deleteAttribute = function(data, event) {

View File

@ -34,8 +34,7 @@ async function uploadFile(req) {
}; };
} }
async function downloadFile(req, res) { async function downloadNoteFile(noteId, res) {
const noteId = req.params.noteId;
const note = await repository.getNote(noteId); const note = await repository.getNote(noteId);
if (!note) { if (!note) {
@ -43,8 +42,7 @@ async function downloadFile(req, res) {
} }
if (note.isProtected && !protectedSessionService.isProtectedSessionAvailable()) { if (note.isProtected && !protectedSessionService.isProtectedSessionAvailable()) {
res.status(401).send("Protected session not available"); return res.status(401).send("Protected session not available");
return;
} }
const originalFileName = await note.getLabel('originalFileName'); const originalFileName = await note.getLabel('originalFileName');
@ -56,7 +54,15 @@ async function downloadFile(req, res) {
res.send(note.content); res.send(note.content);
} }
async function downloadFile(req, res) {
const noteId = req.params.noteId;
return await downloadNoteFile(noteId, res);
}
module.exports = { module.exports = {
uploadFile, uploadFile,
downloadFile downloadFile,
downloadNoteFile
}; };

View File

@ -1,21 +1,27 @@
const repository = require('../services/repository'); const repository = require('../services/repository');
const log = require('../services/log'); const log = require('../services/log');
const fileUploadService = require('./api/file_upload');
const scriptService = require('../services/script'); const scriptService = require('../services/script');
function register(router) { function register(router) {
router.all('/custom/:path*', async (req, res, next) => { router.all('/custom/:path*', async (req, res, next) => {
const attrs = await repository.getEntities("SELECT * FROM attributes WHERE isDeleted = 0 AND type = 'label' AND ('customRequestHandler', 'customResourceProvider')"); // express puts content after first slash into 0 index element
const path = req.params.path + req.params[0];
const attrs = await repository.getEntities("SELECT * FROM attributes WHERE isDeleted = 0 AND type = 'label' AND name IN ('customRequestHandler', 'customResourceProvider')");
for (const attr of attrs) { for (const attr of attrs) {
const regex = new RegExp(attr.value); const regex = new RegExp(attr.value);
try { try {
const m = regex.match(router.path); const m = path.match(regex);
if (m) { if (m) {
if (attr.name === 'customRequestHandler') { if (attr.name === 'customRequestHandler') {
const note = await attr.getNote(); const note = await attr.getNote();
log.info(`Handling custom request "${path}" with note ${note.noteId}`);
await scriptService.executeNote(note, { await scriptService.executeNote(note, {
pathParams: m.slice(1), pathParams: m.slice(1),
req, req,
@ -23,10 +29,10 @@ function register(router) {
}); });
} }
else if (attr.name === 'customResourceProvider') { else if (attr.name === 'customResourceProvider') {
await fileUploadService.downloadNoteFile(attr.noteId, res);
} }
break; return;
} }
} }
catch (e) { catch (e) {
@ -34,7 +40,10 @@ function register(router) {
} }
} }
res.send('Hello ' + req.params.path); const message = `No handler matched for custom ${path} request.`;
log.info(message);
res.status(404).send(message);
}); });
} }