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,118 +1,131 @@
require('isomorphic-fetch');
const config = require('../config');
var request = require("request");
var token = require('./token');
require ('isomorphic-fetch');
const config = require ('../config');
var request = require ('request');
var databaseHelper = require ('./database');
var getBuildStatus = function (skillID) {
try {
fetch (
`https://api.amazonalexa.com/v0/skills/${skillID}/interactionModel/locales/en-US/status`,
{
method: 'GET',
headers: {
Authorization: config.TOKEN,
},
}
)
.then (l => l.text ())
.then (result => {
return result;
});
} catch (e) {
console.log ('err : ' + e);
}
};
var getBuildStatus = function(skillID){
try{
fetch(`https://api.amazonalexa.com/v0/skills/${skillID}/interactionModel/locales/en-US/status`, {
method: 'GET',
headers: {
Authorization: TOKEN
},
}).then(l=>l.text()).then(result=>{
return result;
});
}catch(e){
console.log("err : " + e);
}
}
var refreshTokens = function () {
return new Promise ((resolve, reject) => {
var options = {
method: 'POST',
url: 'https://api.amazon.com/auth/o2/token',
headers: {
'cache-control': 'no-cache',
'content-type': 'application/x-www-form-urlencoded',
},
form: {
grant_type: 'refresh_token',
refresh_token: config.REFRESH_TOKEN,
client_id: config.CLIENT_ID,
client_secret: config.CLIENT_SECRET,
},
};
var refreshToken = function(db){
return new Promise((resolve, reject)=>{
var options = { method: 'POST',
url: 'https://api.amazon.com/auth/o2/token',
headers:
{ 'cache-control': 'no-cache',
'content-type': 'application/x-www-form-urlencoded' },
form:
{ grant_type: 'refresh_token',
refresh_token: config.REFRESH_TOKEN,
client_id: config.CLIENT_ID,
client_secret: config.CLIENT_SECRET } };
request(options, function (error, response, body) {
if (error) reject(error);
parsedResponse = JSON.parse(body);
if (parsedResponse.refresh_token){
try{
token.updateTokens(parsedResponse.refresh_token, parsedResponse.access_token, parsedResponse.expires_in,db);
resolve();
}catch(e){
reject(e);
}
}
});
request (options, function (error, response, body) {
if (error) reject (error);
parsedResponse = JSON.parse (body);
if (parsedResponse.refresh_token)
return databaseHelper.updateTokens (
parsedResponse.refresh_token,
parsedResponse.access_token,
parsedResponse.expires_in
);
});
}
});
};
var generateInteractionModel = function(skill){
let result = {};
let allIntents = [];
let defaultIntents = [{
name: "AMAZON.CancelIntent",
samples: []
},
{
name: "AMAZON.HelpIntent",
samples: []
},
{
name: "AMAZON.StopIntent",
samples: []
}];
var generateInteractionModel = function (skill) {
let result = {};
let allIntents = [];
let defaultIntents = [
{
name: 'AMAZON.CancelIntent',
samples: [],
},
{
name: 'AMAZON.HelpIntent',
samples: [],
},
{
name: 'AMAZON.StopIntent',
samples: [],
},
];
/*
/*
defaultIntents.map(intent=>{
allIntents.push(intent);
});
*/
skill.intents.map(intent=>{
allIntents.push({name: intent.intentName, samples: intent.questions});
});
skill.intents.map (intent => {
allIntents.push ({name: intent.intentName, samples: intent.questions});
});
result.interactionModel = {};
result.interactionModel = {};
result.interactionModel.languageModel = {
invocationName: skill.invocationName,
intents: allIntents
};
result.interactionModel.languageModel = {
invocationName: skill.invocationName,
intents: allIntents,
};
return JSON.stringify(result);
}
return JSON.stringify (result);
};
var uploadSkill = function(skill){
return fetch(`https://api.amazonalexa.com/v0/skills/${skill.skillID}/interactionModel/locales/en-US`, {
method: 'POST',
headers: {
Authorization: config.TOKEN
},
body: generateInteractionModel(skill)
});
}
var uploadSkill = function (skill) {
return fetch (
`https://api.amazonalexa.com/v0/skills/${skill.skillID}/interactionModel/locales/en-US`,
{
method: 'POST',
headers: {
Authorization: config.TOKEN,
},
body: generateInteractionModel (skill),
}
);
};
module.exports = {
updateSkill: function(skill, db){
return new Promise((resolve,reject)=>{
if (new Date() / 1000 > config.TOKEN_EXPIRES_IN){
refreshToken(db).then(()=>{
uploadSkill(skill).then(response=>{
resolve(response.status);
});
}).catch(e=>{
reject(e);
});
}else{
uploadSkill(skill).then(response=>{
resolve(response.status);
}).catch(e=>{
reject(e);
})
}
});
}
};
updateSkill: function (skill) {
return new Promise ((resolve, reject) => {
if (new Date () / 1000 > config.TOKEN_EXPIRES_IN) {
refreshTokens ()
.then (() => {
uploadSkill (skill).then (response => {
resolve (response.status);
});
})
.catch (e => {
reject (e);
});
} else {
uploadSkill (skill)
.then (response => {
resolve (response.status);
})
.catch (e => {
reject (e);
});
}
});
},
};