From b026f8d192241ad367f3c0dbcff6b197ed9b8573 Mon Sep 17 00:00:00 2001 From: Rowan Manning Date: Thu, 26 Sep 2013 14:28:53 +0100 Subject: [PATCH] Add JSON download for results --- route/result/download.js | 67 ++++++++++++++++++++++++++++------------ view/task/index.html | 2 +- 2 files changed, 49 insertions(+), 20 deletions(-) diff --git a/route/result/download.js b/route/result/download.js index 36b8c0e..739029a 100644 --- a/route/result/download.js +++ b/route/result/download.js @@ -7,36 +7,65 @@ module.exports = route; // Route definition function route (app) { - app.express.get('/:id/:rid.csv', function (req, res, next) { + function getTaskAndResult (req, res, next) { app.webservice.task(req.params.id).get({}, function (err, task) { if (err) { - return next(); + return next('route'); } app.webservice .task(req.params.id) .result(req.params.rid) .get({full: true}, function (err, result) { if (err) { - return next(); + return next('route'); } - var rows = ['"code", "message", "type"']; - result.results.forEach(function (msg) { - rows.push([ - JSON.stringify(msg.code), - JSON.stringify(msg.message), - JSON.stringify(msg.type) - ].join(', ')); - }); - res.attachment([ - 'pa11y--', - task.url.replace(/^https?:\/\//i, '').replace(/\/$/, '').replace(/[^a-z0-9\.\-\_]+/gi, '-') + '--', - task.standard.toLowerCase() + '--', - moment(result.date).format('YYYY-MM-DD'), - '.csv' - ].join('')); - res.send(rows.join('\n')); + res.locals.task = task; + res.locals.result = result; + next(); }); }); + } + + function getDownloadFileName (task, result, extension) { + return [ + 'pa11y', + '--', + task.url + .replace(/^https?:\/\//i, '') + .replace(/\/$/, '') + .replace(/[^a-z0-9\.\-\_]+/gi, '-'), + '--', + task.standard.toLowerCase(), + '--', + moment(result.date).format('YYYY-MM-DD'), + '.', + extension + ].join('') + } + + app.express.get('/:id/:rid.csv', getTaskAndResult, function (req, res) { + var task = res.locals.task; + var result = res.locals.result; + var rows = ['"code", "message", "type"']; + result.results.forEach(function (msg) { + rows.push([ + JSON.stringify(msg.code), + JSON.stringify(msg.message), + JSON.stringify(msg.type) + ].join(', ')); + }); + res.attachment(getDownloadFileName(task, result, 'csv')); + res.send(rows.join('\n')); + }); + + app.express.get('/:id/:rid.json', getTaskAndResult, function (req, res) { + var task = res.locals.task; + var result = res.locals.result; + res.attachment(getDownloadFileName(task, result, 'json')); + delete task.id; + delete result.id; + result.task = task; + res.send(result); }); } diff --git a/view/task/index.html b/view/task/index.html index 093a3a3..c95668d 100644 --- a/view/task/index.html +++ b/view/task/index.html @@ -91,7 +91,7 @@
- Download JSON + Download JSON