This repository has been archived on 2024-01-30. You can view files and clone it, but cannot push or open issues or pull requests.
trev/nodejs/routes/index.js

98 lines
2.7 KiB
JavaScript

var express = require('express');
var jwt = require('express-jwt');
var passport = require('passport');
var arcom = new require('../ar-com');
var config = require('../config');
var models = new require('../models');
var auth = jwt({secret: config.crypto_secret, userProperty: 'payload'});
var router = express.Router();
// Database models
var rcdb = new models.RCDB();
var users = new models.Users();
// Arduino communications
var arduino = new arcom.Arduino(config.debug);
var rc = new arcom.RC(arduino);
var ir = new arcom.IR(arduino);
// Get arduino ready
arduino.setup();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
// RC Routes
router.get('/getRCs', auth, function (req, res, next) {
rcdb.findAll(function (error, results, fields) {
if(error){ console.log(error); return(next); }
res.json(results);
});
});
router.post('/sendRC', auth, function (req, res, next){
rc.send(req.body.code);
res.send('Success!');
});
router.post('/addRC', auth, function (req, res, next){
rcdb.add(req.body, function (error, result) {
if(error) {console.log(error); return(next);}
res.json(result);
});
});
router.post('/deleteRC', auth, function (req, res, next){
rcdb.delete(req.body.id, function (error, result) {
if(error) {console.log(error); return(next);}
res.json(result);
});
});
router.post('/changeRC', auth, function (req, res, next){
rcdb.change(req.body, function (error, result) {
if(error) {console.log(error); return(next);}
res.json(result);
});
});
// IR Routes
router.get('/irTest', auth, function (req, res) {
//arduino.write(new Buffer('X0' + String.fromCharCode(4) + String.fromCharCode(12) + String.fromCharCode(0)+String.fromCharCode(0)+String.fromCharCode(2689 / 256) + String.fromCharCode(2689 % 256),'ascii'));
ir.receive();
ir.send(4,12,2689);
res.send('switch light');
});
// Authentication
router.post('/register', auth, function(req, res, next){
if(!req.body.username || !req.body.password){
return res.status(400).json({message: 'Please fill out all fields.'});
}
users.add(req.body.username, req.body.password, function (error, result){
if(error){ return next(error); }
return res.send('success');
});
});
router.post('/login', function(req, res, next){
if(!req.body.username || !req.body.password){
return res.status(400).json({message: 'Please fill out all fields'});
}
passport.authenticate('local', function(error, result, info){
if(error){ return next(error); }
if(result){
return res.json({token: users.generateJWT(result.id, result.name)});
} else {
return res.status(401).json(info);
}
})(req, res, next);
});
module.exports = router;