Files
YellowLabTools/lib/server/controllers/apiController.js
T

86 lines
2.2 KiB
JavaScript

var debug = require('debug')('ylt:server');
var runsQueue = require('../datastores/runsQueue');
var runsDatastore = require('../datastores/runsDatastore');
function ApiController(app) {
'use strict';
// Retrieve the list of all runs
/*app.get('/runs', function(req, res) {
// NOT YET
});*/
// Create a new run
app.post('/runs', function(req, res) {
// Grab the test parameters
var run = {
// Generate a random run ID
_id: (Date.now()*1000 + Math.round(Math.random()*1000)).toString(36),
params: {
url: req.body.url,
waitForResponse: req.body.waitForResponse || true
}
};
// Add test to the testQueue
debug('Adding test %s to the queue', run._id);
var queuing = runsQueue.push(run._id);
// Save the run to the datastore
var position = runsQueue.getPosition(run._id);
run.status = {
statusCode: (position === 0) ? STATUS_RUNNING : STATUS_AWAITING,
position: position
};
runsDatastore.add(run);
// Listening for position updates
queuing.progress(function(position) {
var savedRun = runsDatastore.get(run._id);
savedRun.status = {
statusCode: STATUS_AWAITING,
position: position
};
runsDatastore.update(savedRun);
});
queuing.then(function() {
});
// The user doesn't not want to wait for the response
if (!params.waitForResponse) {
// Sending just the test id
res.setHeader('Content-Type', 'application/javascript');
res.send(JSON.stringify({
testId: testId
}));
}
});
// Retrive one run by id
app.get('/run/:id', function(req, res) {
});
// Delete one run by id
/*app.delete('/run/:id', function(req, res) {
// NOT YET
});*/
var STATUS_AWAITING = 'awaiting';
var STATUS_RUNNING = 'running';
var STATUS_DONE = 'done';
var STATUS_FAILED = 'failed';
}
module.exports = ApiController;