var Promise = require('promise'); var requestPromise = require('./helpers/requestPromise.js'); var BasePlugin = require('./base.js'); var logger = require('winston'); class InstantAswer extends BasePlugin { constructor(config) { super(config); this.name = 'InstantAswer'; } test(input) { var res = null; if (res = input.match(/^\.wtf (.+)$/i)) { return true; } return false; } getDDG(query) { var urlArgs = { q: query, kp: -1, skip_disambig: '0', format: 'json' }; let url = 'https://api.duckduckgo.com/'; var promise = requestPromise(url, urlArgs, { 'Accept': 'application/json', }); return promise; } getAnswer(query) { let that = this; var promise = new Promise(function(resolve, reject) { that.getDDG(query).then((response) => { var str = ''; if(response.AbstractText !== '') { var text = ''; if(response.AbstractText.length > 350) { text = response.AbstractText.substring(0, 350-response.AbstractURL.length) + '...'; } else { text = response.AbstractText; } str = 'Vastaus: ' + text + '" | ' + response.AbstractURL; resolve(str); } else if(response.RelatedTopics.length > 0) { str = 'Vastaus: "' + response.RelatedTopics[0].Text + '" | ' + response.RelatedTopics[0].FirstURL; resolve(str); } else { reject(); } }, reject); }); return promise; } result(input) { let that = this; var resultPromise = new Promise(function(resultResolve, resultReject) { var res = null; if (res = input.match(/^\.wtf (.+)$/i)) { let query = res[1] that.getAnswer(query).then(str => { resultResolve(str); }) } else { resultReject(); } }); return resultPromise; } } module.exports = InstantAswer;