var amazonHelper = require ('./helpers/amazon'); var databaseHelper = require ('./helpers/database'); const config = require ('./config/config'); const constants = require ('./config/constants'); require ('isomorphic-fetch'); var express = require ('express'); var alexa = require('./components/alexa'); var bodyParser = require ('body-parser'); var MongoClient = require ('mongodb').MongoClient; var ObjectID = require ('mongodb').ObjectID; const router = express.Router (); var app = express (); // ALWAYS setup the alexa app and attach it to express before anything else. alexa.init(app); // from here on you can setup any other express routes or middlewares as nor app.set ('view engine', 'ejs'); /* router.get ('/deleteSkill/:skillID', async (req, res, next) => { databaseHelper .deleteSkill (req.params.id) .then (result => { res.json (result); }) .catch (err => { res.json (err); }); }); */ router.get ('/getSkill/:id', async (req, res, next) => { const id = req.params.id; if (id.length !== constants.skillIDLength) { res.json ([]); } else { databaseHelper .getSkill (id) .then (result => { res.json (result); }) .catch (err => { res.json ([]); }); } }); router.post ('/updateSkill/:id', async (req, res, next) => { let id = req.params.id; let dataFromWeb = JSON.stringify(req.body); let skill = JSON.parse(dataFromWeb); let updateOnAmazon = skill.updateOnAmazon; delete skill.updateOnAmazon; delete skill._id; console.log('id = ' + id); if (id !== '-1') { if (updateOnAmazon){ amazonHelper.updateSkill(skill).then(amazonResult=>{ console.log('Amazon : ' + amazonResult); if (amazonResult === constants.amazonResultCodes.ok || amazonResult === constants.amazonResultCodes.accepted) { //Skill uploaded, it's ok to update databaseI databaseHelper .updateSkill (id, skill) .then (result => { res.json ({result: constants.apiResultCodes.ok, message: ''}); alexa.updateIntentsJSON (); }) .catch (e => { res.json ({result: constants.apiResultCodes.databaseError, message: ''}); }); }else{ res.json({result: constants.apiResultCodes.amazonError, message: amazonResult}); } }).catch(e=>{ res.json ({result: constants.apiResultCodes.amazonError, message: 'unknown'}); }); }else{ databaseHelper .updateSkill (id, skill) .then (result => { res.json ({result: constants.apiResultCodes.ok, message: ''}); alexa.updateIntentsJSON (); }) .catch (e => { res.json ({result: constants.apiResultCodes.databaseError, message: ''}); }); } } else { //no new skills for now } }); app.use (function (req, res, next) { res.header ('Access-Control-Allow-Origin', '*'); res.header ('Access-Control-Allow-Headers', 'Origin, Content-Type'); res.header ('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'); res.header ('Access-Control-Allow-Credentials', 'true'); next (); }); app.use (bodyParser.json ()); app.use ('/', router); MongoClient.connect (config.dbURL) .then (database => { databaseHelper.initModule (database); app.listen (config.PORT, () => { console.log ('Express server running on port ' + config.PORT); alexa.updateIntentsJSON (); databaseHelper.loadTokens (); }); }) .catch (e => { console.log ('error : ' + e); });