pslockout/webserver/server.js

109 lines
2.7 KiB
JavaScript
Raw Normal View History

2018-02-02 06:46:44 +00:00
const express = require('express');
const app = express();
2018-02-04 00:20:58 +00:00
const toolData = {
2018-02-03 08:48:49 +00:00
categories: [
{
name: 'Woodshop',
slug: 'woodshop',
info: 'Some info about the woodshop.',
photo: 'https://i.imgur.com/RIm8aoG.jpg',
tools: [
{
id: 0,
name: 'White Bandsaw',
photo: 'http://wiki.protospace.ca/images/thumb/f/f8/105.jpg/146px-105.jpg',
notes: 'Requires training. Tighten tension lever prior to use / Loosen tension lever after use. Tension lever is on rear.',
wikiId: 105,
},
{
id: 1,
name: 'Jointer',
photo: 'http://wiki.protospace.ca/images/thumb/6/6f/73.jpg/302px-73.jpg',
notes: 'Boards must be ABSOLUTELY FREE of nails, staples, screws, or other metal. Check boards thoroughly each and every time, make no presumptions. One mistake will chip the blade and render it useless (drum blades are very expensive).',
wikiId: 73,
},
],
},
{
name: 'Metalshop',
slug: 'metalshop',
info: 'Some info about the metalshop.',
photo: 'https://i.imgur.com/A2L2ACY.jpg',
tools: [
{
id: 2,
name: 'Tormach CNC',
photo: 'http://wiki.protospace.ca/images/thumb/c/cf/49.jpg/320px-49.jpg',
notes: 'Must complete Shop Safety, Lathe Training, 3D CAD Training, CAM Training, 1 on 1 Project.',
wikiId: 49,
},
{
id: 3,
name: 'Powerfist Bench Grinder',
photo: 'http://wiki.protospace.ca/images/thumb/c/cd/39.jpg/298px-39.jpg',
notes: 'A bench grinder is for grinding steels or deburring steel or aluminum (if fitted with a wire wheel).',
wikiId: 39,
},
],
},
],
};
2018-02-04 00:20:58 +00:00
const user = {
username: "protospace",
name: "Protospace User",
authorizedTools: [1, 2],
}
const lockoutData = {
lockouts: [
{
mac: '2C3AE843A15F',
relayOn: false,
ledOn: true,
date: '2018-02-01',
},
],
2018-02-02 06:46:44 +00:00
};
2018-02-03 08:48:49 +00:00
const server = app.listen(8080, function () {
console.log('Example app listening on port 8080!');
});
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
2018-02-02 06:46:44 +00:00
});
app.use('/', express.static('dist'));
2018-02-04 00:20:58 +00:00
app.get('/api/tooldata', function (req, res) {
console.log('Request for tool data');
res.setHeader('Content-Type', 'application/json');
res.send(toolData);
});
app.get('/api/user', function (req, res) {
console.log('Request for user data');
2018-02-03 08:48:49 +00:00
res.setHeader('Content-Type', 'application/json');
2018-02-04 00:20:58 +00:00
res.send(user);
2018-02-03 08:48:49 +00:00
});
2018-02-04 00:20:58 +00:00
app.get('/api/lockout/:mac', function (req, res) {
2018-02-02 06:46:44 +00:00
const mac = req.params.mac;
2018-02-04 00:20:58 +00:00
const data = lockoutData.lockouts.find(x => x.mac === mac);
2018-02-02 06:46:44 +00:00
if (!data) {
res.send(404);
}
2018-02-03 08:48:49 +00:00
console.log('Request from MAC: ' + mac);
2018-02-02 06:46:44 +00:00
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify(data));
});