fix bug with undefined variable ; improve abstraction

This commit is contained in:
GotPPay
2018-04-02 12:55:31 +02:00
parent 38c63e619b
commit ec3d4dcd6c
4 changed files with 270 additions and 92 deletions

View File

@@ -35,73 +35,85 @@ getDataFromWPJSON = function (sourceUrl, page = 1, maxPosts = 10) {
});
};
summarizeText = function (text, length, clearText=true){
if (clearText){
text = htmlToText.fromString(post.content.rendered,{
wordwrap:false,
ignoreHref:true,
ignoreImage:true
summarizeText = function (text, length, clearText = true) {
if (clearText) {
text = htmlToText.fromString (text, {
wordwrap: false,
ignoreHref: true,
ignoreImage: true,
});
}
return summarizer(text,{n:length});
}
return summarizer (text, {n: length});
};
getTitlesFromWP = function (sourceUrl) {
return new Promise ((resolve, reject) => {
getDataFromWPJSON (sourceUrl)
.then (rawData => {
let result = '';
rawData.forEach (post => {
result +=
post.title.rendered +
`<break time="${constants.voiceResponseTimings.PAUSE_BETWEEN_TITLES}ms"/> `;
});
resolve (result);
})
.catch (err => {
reject (constants.voiceResponseStrings.ERROR_FETCHING_CONTENT);
});
});
};
getLatestNewsFromWP = function (
sourceUrl,
postCount = 10,
includeTitle = false
) {
return new Promise ((resolve, reject) => {
getDataFromWPJSON (sourceUrl, 1, postCount)
.then (rawData => {
let result = '';
let htmlToTextOptions = {
wordwrap: false,
ignoreHref: true,
ignoreImage: true,
};
try {
rawData.forEach (post => {
result += includeTitle ? post.title.rendered : '';
result += includeTitle
? `<break time="${constants.voiceResponseTimings.PAUSE_BETWEEN_TITLE_AND_CONTENT}ms"/>`
: '';
result += summarizeText (
post.content.rendered,
constants.FIXED_SUMMARY_LENGTH
);
result += `<break time="${constants.voiceResponseTimings.PAUSE_BETWEEN_NEWS}ms"/>`;
});
resolve (result);
} catch (err) {
reject (constants.voiceResponseStrings.ERROR_SUMMARIZING_CONTENT);
}
})
.catch (err => {
reject (constants.voiceResponseStrings.ERROR_FETCHING_CONTENT);
});
});
};
module.exports = {
getAnswerFromWP: function (sourceUrl) {
getAnswerFromWP: function (sourceUrl, contentType) {
//This function will extract needed data from JSON, which we got from getDataFromWPJSON
//At the moment, it's taking titles and creates answer
return new Promise ((resolve, reject) => {
getDataFromWPJSON (sourceUrl)
.then (rawData => {
let result = '';
rawData.forEach (post => {
result +=
post.title.rendered +
`<break time="${constants.voiceResponseTimings.PAUSE_BETWEEN_TITLES}ms"/> `;
});
resolve (result);
})
.catch (err => {
reject (constants.voiceResponseString.ERROR_FETCHING_CONTENT);
});
});
},
getLatestNewsFromWP: function (
sourceUrl,
postCount = 10,
includeTitle = false
) {
return new Promise ((resolve, reject) => {
getDataFromWPJSON (sourceUrl, 1, postCount)
.then (rawData => {
let result = '';
let htmlToTextOptions = {
wordwrap: false,
ignoreHref: true,
ignoreImage: true,
}
try {
rawData.forEach (post => {
result += includeTitle ? post.title.rendered : '';
result += includeTitle
? `<break time="${constants.voiceResponseTimings.PAUSE_BETWEEN_TITLE_AND_CONTENT}ms"/>`
: '';
result += summarizeText(post.content.rendered,3);
result += `<break time="${constants.voiceResponseTimings.PAUSE_BETWEEN_NEWS}ms"/>`;
});
resolve (result);
} catch (err) {
reject (constants.voiceResponseString.ERROR_SUMMARIZING_CONTENT);
}
})
.catch (err => {
reject (constants.voiceResponseString.ERROR_FETCHING_CONTENT);
});
});
switch (contentType) {
case constants.contentType.TITLES:
return getTitlesFromWP (sourceUrl);
break;
case constants.contentType.NEWS:
return getLatestNewsFromWP (sourceUrl);
break;
}
},
};