var express = require ('express'), router = express.Router (); const constants = require ('../config/constants'); var databaseHelper = require ('../helpers/database'); var amazonHelper = require ('../helpers/amazon'); var bodyParser = require ('body-parser'); var alexa = require ('../components/alexa'); router.get ('/: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 ('/:id', bodyParser.json (), 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 } }); module.exports = router;