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;