122 lines
3.5 KiB
JavaScript
122 lines
3.5 KiB
JavaScript
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);
|
|
});
|