refactoring

This commit is contained in:
GotPPay
2018-01-08 21:50:24 +01:00
parent cd48599f39
commit 1a9227e76d
7 changed files with 311 additions and 578 deletions

View File

@@ -1,29 +1,21 @@
var amazonHelper = require('./helpers/amazon');
var databaseHelper = require('./helpers/database');
const config = require('./config');
require('isomorphic-fetch');
var express = require('express');
var alexa = require('alexa-app');
var bodyParser = require('body-parser');
var amazonHelper = require ('./helpers/amazon');
var databaseHelper = require ('./helpers/database');
const config = require ('./config');
require ('isomorphic-fetch');
var express = require ('express');
var alexa = require ('alexa-app');
var bodyParser = require ('body-parser');
var MongoClient = require ('mongodb').MongoClient;
var ObjectID = require ('mongodb').ObjectID;
const router = express.Router ();
var skillID = 'amzn1.ask.skill.7115bfc9-313e-4728-830b-ebd19ce96cb3';
var skillDbID = '5a5016e775becaef2015da10'; //_id in database
var app = express();
var app = express ();
// ALWAYS setup the alexa app and attach it to express before anything else.
var alexaApp = new alexa.app('step3'); // this means we still work with one skill
var alexaApp = new alexa.app ('step3'); // this means we still work with one skill
alexaApp.express({
alexaApp.express ({
expressApp: app,
// verifies requests come from amazon alexa. Must be enabled for production.
@@ -34,106 +26,105 @@ alexaApp.express({
// sets up a GET route when set to true. This is handy for testing in
// development, but not recommended for production. disabled by default
debug: true,
preRequest: (request, response)=>{
console.log('Pre req');
}
});
// now POST calls to /test in express will be handled by the app.request() function
// from here on you can setup any other express routes or middlewares as nor
app.set("view engine", "ejs");
app.set ('view engine', 'ejs');
var updateIntentsJSON = function(){
db.collection('skill_list').findOne({_id: ObjectID(skillDbID)}, (err, skill)=>{
if (skill){
skill.intents.map(intent => {
alexaApp.intent(intent.intentName,{'slots':[], 'utterances':intent.questions}, function(request,response){ return response.say(intent.answer);});
var updateIntentsJSON = function () {
databaseHelper
.loadSkill (config.SKILL_DB_ID)
.then (skill => {
skill.intents.map (intent => {
alexaApp.intent (
intent.intentName,
{
slots: [],
utterances: intent.questions,
},
function (request, response) {
return response.say (intent.answer);
}
);
});
alexaApp.launch((request,response)=>{
return response.say(skill.invocationAnswer);
alexaApp.launch ((request, response) => {
return response.say (skill.invocationAnswer);
});
}
});
}
})
.catch (err => {
console.log (err);
alexaApp.launch ((request, response) => {
return response.say ('Sorry, there was no skill with that name');
});
});
};
router.get ('/getSkill/:id', async (req, res, next) => {
try {
const id = req.params.id;
const id = req.params.id;
if (id.length !== 24){
res.json([]);
throw("error");
}
db.collection ('skill_list').find({_id: ObjectID(id)}).toArray((err,result)=>{
if (err){
throw err;
res.json([]);
}else{
res.json(result);
}
});
} catch (e) {
console.log ('error:', e);
next (e);
if (id.length !== 24) {
res.json ([]);
} else {
databaseHelper
.getSkill (id)
.then (result => {
res.json (result);
})
.catch (err => {
res.json ([]);
});
}
});
router.get ('/deleteSkill/:skillID', async (req, res, next) => {
try {
let id = req.params.id;
let result = db.collection('skill_list').remove({_id: ObjectID(id)},(err,result)=>{
if (err) throw err;
res.json(result);
databaseHelper
.deleteSkill (req.params.id)
.then (result => {
res.json (result);
})
.catch (err => {
res.json (err);
});
} catch (e) {
console.log ('error:', e);
next (e);
}
});
router.post ('/updateSkill/:id', async (req, res, next) => {
let id = req.params.id;
let skill = req.body;
delete skill._id;
if (id !== '-1'){
amazonHelper.updateSkill(skill,db).then(amazonResult=>{
if (amazonResult===200 || amazonResult===202){
//Skill uploaded, it's ok to update database
let result = db.collection('skill_list').update({_id: ObjectID(id)}, skill,{upsert:true}, (err, result)=>{
if (JSON.parse(result).nModified===1){
//database update ok
res.json({result:0, message:'ok'});
updateIntentsJSON();
}else{
res.json({result:-1, message:'ok'});
}
});
}else{
res.json({result:-1, message:'Amazon result ' + amazonResult});
let id = req.params.id;
let skill = req.body;
delete skill._id;
if (id !== '-1') {
amazonHelper
.updateSkill (skill)
.then (amazonResult => {
if (amazonResult === 200 || amazonResult === 202) {
//Skill uploaded, it's ok to update databaseI
databaseHelper
.updateSkill (id, skill)
.then (result => {
res.json ({result: 0, message: 'ok'});
updateIntentsJSON ();
})
.catch (e => {
res.json ({result: -1, message: 'ok'});
});
} else {
res.json ({result: -1, message: 'Amazon result ' + amazonResult});
}
}).catch(e=>{
})
.catch (e => {
//skill upload went wrong, don't update database, send error
res.json({result:-1, message:e});
res.json ({result: -1, message: e});
});
}else{
//no new skills for now
}
} 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-Headers', 'Origin, Content-Type');
res.header ('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
res.header ('Access-Control-Allow-Credentials', 'true');
next ();
@@ -142,18 +133,16 @@ app.use (function (req, res, next) {
app.use (bodyParser.json ());
app.use ('/', router);
MongoClient.connect (config.dbURL)
.then (database => {
databaseHelper.initModule (database);
MongoClient.connect (config.dbURL).then (database => {
db = database;
db.collection ('intent_list');
databaseHelper.initModule(db);
app.listen (config.PORT, () =>{
console.log ('Express server running on port ' + config.PORT);
updateIntentsJSON();
databaseHelper.loadTokens();
app.listen (config.PORT, () => {
console.log ('Express server running on port ' + config.PORT);
updateIntentsJSON ();
databaseHelper.loadTokens ();
});
})
.catch (e => {
console.log ('error : ' + e);
});
}).catch(e=>{
console.log("error : " + e);
});