2152 - Show identifier at file name on downloads
gitea/salix/pipeline/head This commit looks good Details

This commit is contained in:
Joan Sanchez 2020-03-16 09:51:29 +01:00
parent 16cdc419ea
commit 676033060d
1 changed files with 38 additions and 1 deletions

View File

@ -13,12 +13,49 @@ module.exports = app => {
if (!hasRequiredArgs)
throw new Error(`Required properties not found [${argList}]`);
const report = new Report(req.params.name, args);
const reportName = req.params.name;
const fileName = getFileName(reportName, args);
const report = new Report(reportName, args);
const stream = await report.toPdfStream();
res.setHeader('Content-type', 'application/pdf');
res.setHeader('Content-Disposition', `inline; filename="${fileName}"`);
stream.pipe(res);
} catch (error) {
next(error);
}
});
/**
* Returns all the params that ends with id
* @param {object} args - Params object
*
* @return {array} List of identifiers
*/
function getIdentifiers(args) {
const identifiers = [];
const keys = Object.keys(args);
for (let arg of keys) {
// FIXME: #2197 - Remove clientId as a required param
if (arg != 'clientId' && arg.endsWith('Id'))
identifiers.push(arg);
}
return identifiers;
}
function getFileName(name, args) {
const identifiers = getIdentifiers(args);
const params = [];
params.push(name);
for (let id of identifiers)
params.push(args[id]);
const fileName = params.join('_');
return `${fileName}.pdf`;
}
};