Files
old-tellall/backend/controllers/skill.js
2018-01-13 14:57:41 +01:00

92 lines
2.5 KiB
JavaScript

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;