const request = require('request'); const cheerio = require('cheerio'); const STRING = require('string'); const logger = require('log4js').getLogger('history'); module.exports = { 'getTechHistory': function() { let url; let d; let day; let month; const monthNames = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ]; d = new Date(); month = monthNames[d.getMonth()]; day = d.getDate(); url = ['http://www.computerhistory.org/tdih/', month, '/', day].join(''); logger.debug(url); return new Promise(function(resolve, reject) { 'use strict'; request(url, function(err, resp, body) { if (err) // Logger.error(err); return reject(err); // Throw err; const $ = cheerio.load(body); const tdihbody = $('#tdihbody .tdihevent'); const output = []; tdihbody.find('p').each(function(div) { const s = $(this).text(); output.push(STRING(s).collapseWhitespace().s); }); return resolve(output); }, function(error, response, body) { if (response.statusCode !== 200) { logger.error(response.statusCode); logger.error(body); return reject(error); } }); }); }, 'getHistory': function() { let url; const d = new Date(); let day; let month; const monthNames = [ 'january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december' ]; month = monthNames[d.getMonth()]; day = d.getDate(); url = [ 'http://www.bbc.co.uk/scotland/history/onthisday/', month, '/', day ].join(''); logger.debug(url); return new Promise(function(resolve, reject) { request(url, function(err, resp, body) { if (err) // Logger.error(err); return reject(err); // Throw err; const $ = cheerio.load(body); const nbody = $('DIV#bbcPageContent').first(); const output = []; nbody.find('.story > p').each(function(div) { const s = $(this).text(); if (s.indexOf('Today\'s recipe:') == -1) output.push(s); }); return resolve(output); }, function(error, response, body) { if (response.statusCode !== 200) { logger.error(response.statusCode); logger.error(body); return reject(error); } }); }); }, 'updateHistory': function() { 'use strict'; let output = []; return new Promise(function(resolve, reject) { module.exports.getHistory() .then((d) => { output = d; module.exports.getTechHistory() .then((d) => { output = output.concat(d); return resolve(output); }) .catch((e) => { logger.error(e); return reject(e); }); }) .catch((e) => { logger.error(e); return reject(e); }); }); } };