-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
50 lines (42 loc) · 1.2 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
function getStatus (req, res) {
res.send({message: `Online! Cluster running at pid ${this.pid}`}) ;
}
async function addJob (req, res) {
const jobId = await this.addJob(
req.body.host,
req.body.nonce,
req.body.batchSize,
);
res.send({id: jobId});
}
function getJob (req, res) {
const jobId = req.params.id;
const job = this.getJob(jobId)
if (job !== undefined) {
res.send({
id: jobId,
progress: job.progress,
status: job.status
});
} else {
res.status(404).send("Not found");
}
}
function cancelJob (req, res) {
const jobId = req.params.id;
const job = this.getJob(jobId);
if (job !== undefined) {
this.cancelJob(jobId);
res.send(job.status);
} else {
res.status(404).send("Not found");
}
}
module.exports = function(app, port, cluster) {
app.get('/status', getStatus.bind(cluster));
app.post('/jobs', addJob.bind(cluster));
app.get('/jobs/:id', getJob.bind(cluster))
app.delete('/jobs/:id', cancelJob.bind(cluster))
app.listen(port, () => console.log(`Cluster webserver listening at http://localhost:${port}`));
return app;
};