Add JSON download for results

This commit is contained in:
Rowan Manning
2013-09-26 14:28:53 +01:00
parent 8e1dde9ec0
commit b026f8d192
2 changed files with 49 additions and 20 deletions

View File

@@ -7,18 +7,45 @@ 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');
}
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([
@@ -27,16 +54,18 @@ function route (app) {
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.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);
});
}

View File

@@ -91,7 +91,7 @@
</div>
<!-- ##################### End ######################## -->
<div class="col-md-12 col-sm-6 col-xs-12">
<a href="/{{task.id}}.json" target="_blank" class="btn-full-width btn btn-default">Download JSON <span class="glyphicon glyphicon-download"></span></a>
<a href="{{mainResult.hrefJson}}" class="btn-full-width btn btn-default">Download JSON <span class="glyphicon glyphicon-download"></span></a>
</div>
</div>
</div>