diff --git a/.jshintrc b/.jshintrc index 2f30d16..7522909 100644 --- a/.jshintrc +++ b/.jshintrc @@ -5,6 +5,7 @@ "window", "-Promise" ], + "node":true, "browser": true, "boss": true, "curly": true, diff --git a/lib/today.js b/lib/today.js index 47df838..8a41ef7 100644 --- a/lib/today.js +++ b/lib/today.js @@ -1,15 +1,11 @@ /** * Created by marti on 30/01/2016. */ -var http = require('http'), request = require('request'), cheerio = require( - 'cheerio'), util = require('util'), UltraSES = require( +var http = require('http'), request = require('request'), cheerio = require('cheerio'), util = require('util'), UltraSES = require( 'ultrases'), cron = require('node-cron'); -var jade = require('jade'), _ = require('lodash'), dateFormat = require( - 'dateformat'); -var jsonfile = require('jsonfile'), fs = require('fs'), STRING = require( - 'string'); +var jade = require('jade'), _ = require('lodash'), dateFormat = require('dateformat'); +var jsonfile = require('jsonfile'), fs = require('fs'), STRING = require('string'); var nano = require('nano')('http://localhost:5984'); - var log4js = require('log4js'); var logger = log4js.getLogger(); var calHandler = require('./today/calHandler'); @@ -17,329 +13,252 @@ var swedishWord = require('./today/swedishword'); var weather = require('./today/weather'); var trains = require('./today/trains'); var history = require('./today/history'); - var db_name = 'silvrgit'; var dbCouch = nano.use(db_name); - var todayCache = { - last: 0, data: { - trains: {last: 0, data: []}, - weather: {}, - history: [], - today: '', - tv: {entries: []}, - cal: {entries: []}, - swedish: {} - }, expire: ((60 * 1000) * 60) + last: 0, data: { + trains: {last: 0, data: []}, weather: {}, history: [], today: '', tv: {entries: []}, cal: {entries: []}, swedish: {} + }, expire: ((60 * 1000) * 60) }; - var mailer = new UltraSES({ - aws: { - accessKeyId: 'AKIAJWJS75F7WNCGK64A', - secretAccessKey: '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', - "region": "eu-west-1" - }, defaults: { - from: 'Martin Donnelly ' - } + aws: { + accessKeyId: 'AKIAJWJS75F7WNCGK64A', + secretAccessKey: '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', + region: 'eu-west-1' + }, defaults: { + from: 'Martin Donnelly ' + } }); - var file = __dirname + '/' + 'newdata.json'; var htmlfile = __dirname + '/' + 'today.html'; - function saveData() { - logger.info('Saving...'); - jsonfile.writeFileSync(file, todayCache); + logger.info('Saving...'); + jsonfile.writeFileSync(file, todayCache); } - function saveToDB(data) { - logger.debug('Inserting into couch...'); - // logger.info(util.inspect(obj)); - dbCouch.insert(data, function (err, body, header) { - if (err) { - logger.error('Error inserting into couch'); - logger.error(err); - return; - } - }); -} - -function nth(d) { - if (d > 3 && d < 21) return 'th'; // thanks kennebec - switch (d % 10) { - case 1: - return "st"; - case 2: - return "nd"; - case 3: - return "rd"; - default: - return "th"; + logger.debug('Inserting into couch...'); + // Logger.info(util.inspect(obj)); + dbCouch.insert(data, function(err, body, header) { + if (err) { + logger.error('Error inserting into couch'); + logger.error(err); + return; } + }); +} +function nth(d) { + if (d > 3 && d < 21) {return 'th';} // Thanks kennebec + if (d % 10 === 1) {return 'st';} else if (d % 10 === 2) {return 'nd';} else if (d % 10 === 3) {return 'rd';} else {return 'th';} } - function dayNumber() { - var now = new Date(); - var start = new Date(now.getFullYear(), 0, 0); - var diff = now - start; - var oneDay = 1000 * 60 * 60 * 24; - return Math.floor(diff / oneDay); + var now = new Date(); + var start = new Date(now.getFullYear(), 0, 0); + var diff = now - start; + var oneDay = 1000 * 60 * 60 * 24; + return Math.floor(diff / oneDay); } - function breakDay() { - var now = new Date(); - return {year: now.getFullYear(), month: parseInt(now.getMonth()) + 1, day: now.getDate()} + var now = new Date(); + return {year: now.getFullYear(), month: parseInt(now.getMonth()) + 1, day: now.getDate()} } - /** * @return {number} */ function DayDiff(CurrentDate) { - var TYear = CurrentDate.getFullYear(); - var TDay = new Date("January, 01, " + (parseInt(TYear) + 1)); - TDay.getFullYear(TYear); - var DayCount = (TDay - CurrentDate) / (1000 * 60 * 60 * 24); - DayCount = Math.round(DayCount); - return (DayCount); + var TYear = CurrentDate.getFullYear(); + var TDay = new Date('January, 01, ' + (parseInt(TYear) + 1)); + TDay.getFullYear(TYear); + var DayCount = (TDay - CurrentDate) / (1000 * 60 * 60 * 24); + DayCount = Math.round(DayCount); + return (DayCount); } - Array.prototype.indexOfOld = Array.prototype.indexOf; - -Array.prototype.indexOf = function (e, fn) { - if (!fn) { - return this.indexOfOld(e) - } - else { - if (typeof fn === 'string') { - var att = fn; - fn = function (e) { - return e[att]; - } - } - return this.map(fn).indexOfOld(e); +Array.prototype.indexOf = function(e, fn) { + if (!fn) { + return this.indexOfOld(e); + } else { + if (typeof fn === 'string') { + var att = fn; + fn = function(e) { + return e[att]; + } } + return this.map(fn).indexOfOld(e); + } }; - module.exports = { - getClock: function (req, res) { - // console.log(todayCache); - res.render('pages/clock', todayCache); - }, getToday: function (req, res) { - logger.info(todayCache); - res.render('pages/today', todayCache); - }, getData: function (req, res) { - res.setHeader('Content-Type', 'application/json'); - res.end(JSON.stringify(todayCache)); - }, getTodayDate: function () { - var s, d = new Date(); - todayCache.data.history = []; - - s = '' + dateFormat(d, "mmmm d") + ' - '; - s = s + 'The ' + dayNumber() + nth(dayNumber) + ' day of ' + dateFormat(d, - "yyyy") + ', and there are ' + DayDiff(d) + ' days left until the end of the year.'; - - logger.debug(s); - todayCache.data.today = s; - }, - - refreshTrainAndWeather: function () { - - weather.newDoGetWeather() - .then((d)=> { - todayCache.data.weather = d; - }) - .catch((e) => { - logger.error(e); - }); - - trains.updateTrains() - .then((d) => { - "use strict"; - console.log('Trains: ', d); - todayCache.data.trains.data = d; - todayCache.data.trains.last = new Date(); - }) - .catch((e)=> { - "use strict"; - console.error(e); - }); - - }, preLoadToday: function () { - module.exports.getTodayDate(); - var self = this; - todayCache.data.cal.entries = []; - - weather.newDoGetWeather() - .then((d)=> { - todayCache.data.weather = d; - }) - .catch((e) => { - logger.error(e); - }); - - trains.updateTrains() - .then((d) => { - "use strict"; - console.log('Trains: ', d); - todayCache.data.trains.data = d; - todayCache.data.trains.last = new Date(); - }) - .catch((e)=> { - "use strict"; - console.error(e); - }); - - - history.updateHistory() - .then((d) => { - "use strict"; - console.log('History result: ' , d); - todayCache.data.history = d; - }) - .catch((e)=>{ - "use strict"; - console.error(e); - }); - - - - - - calHandler.getSimpleCalV3('http://www.pogdesign.co.uk/cat/download_ics/60cfdff469d0490545d33d7e3b5c0bcc') - .then((d)=>{ - "use strict"; - todayCache.data.tv = d; + getClock: function(req, res) { + // Console.log(todayCache); + res.render('pages/clock', todayCache); + }, getToday: function(req, res) { + logger.info(todayCache); + res.render('pages/today', todayCache); + }, getData: function(req, res) { + res.setHeader('Content-Type', 'application/json'); + res.end(JSON.stringify(todayCache)); + }, getTodayDate: function() { + var s, d = new Date(); + todayCache.data.history = []; + s = '' + dateFormat(d, 'mmmm d') + ' - '; + s = s + 'The ' + dayNumber() + nth(dayNumber) + ' day of ' + dateFormat(d, + 'yyyy') + ', and there are ' + DayDiff(d) + ' days left until the end of the year.'; + logger.debug(s); + todayCache.data.today = s; + }, refreshTrainAndWeather: function() { + weather.newDoGetWeather() + .then((d) => { + todayCache.data.weather = d; + }).catch((e) => { + logger.error(e); + }); + trains.updateTrains() + .then((d) => { + 'use strict'; + console.log('Trains: ', d); + todayCache.data.trains.data = d; + todayCache.data.trains.last = new Date(); }) - .catch(e)=>{ - logger.error(e); - } - - - calHandler.getSimpleCalV3( - 'https://calendar.google.com/calendar/ical/martind2000%40gmail.com/private-40cfebc9f7dcfa7fde6b9bf2f0092c93/basic.ics' - ) - .then((d)=>{ - "use strict"; - todayCache.data.cal.entries = todayCache.data.cal.entries.concat(d.entries); - }) - .catch(e)=>{ - logger.error(e); - } - - - calHandler.getSimpleCalV3( - 'https://calendar.google.com/calendar/ical/mt5pgdhknvgoc8usfnrso9vkv0%40group.calendar.google.com/private-58876002af9f302a593acfa6fa792dcf/basic.ics' - ) - .then((d)=>{ - "use strict"; - todayCache.data.cal.entries = todayCache.data.cal.entries.concat(d.entries); - }) - .catch(e)=>{ - logger.error(e); - } - - calHandler.getSimpleCalV3( - 'https://www.tripit.com/feed/ical/private/DB96E4BB-94A9BD8F9CC1CF51C6CC0D920840F4F5/tripit.ics' - ) - .then((d)=>{ - "use strict"; - todayCache.data.cal.entries = todayCache.data.cal.entries.concat(d.entries); - }) - .catch(e)=>{ - logger.error(e); - } - - swedishWord.getSwedishWord() - .then((d) => { - "use strict"; - console.log('Swedish result: ' , d); - todayCache.data.swedish =d; - }) - .catch((e)=>{ - "use strict"; - console.error(e); - }); - - todayCache.date = breakDay(); - // word of the day http://wotd.transparent.com/rss/swedish-widget.xml?t=1455840000000 - // time stamp - - } + .catch((e)=> { + 'use strict'; + console.error(e); + }); + }, preLoadToday: function() { + module.exports.getTodayDate(); + var self = this; + todayCache.data.cal.entries = []; + weather.newDoGetWeather() + .then((d)=> { + todayCache.data.weather = d; + }) + .catch((e) => { + logger.error(e); + }); + trains.updateTrains() + .then((d) => { + 'use strict'; + console.log('Trains: ', d); + todayCache.data.trains.data = d; + todayCache.data.trains.last = new Date(); + }) + .catch((e)=> { + 'use strict'; + console.error(e); + }); + history.updateHistory() + .then((d) => { + 'use strict'; + console.log('History result: ', d); + todayCache.data.history = d; + }) + .catch((e)=> { + 'use strict'; + console.error(e); + }); + calHandler.getSimpleCalV3('http://www.pogdesign.co.uk/cat/download_ics/60cfdff469d0490545d33d7e3b5c0bcc') + .then((d) => { + 'use strict'; + todayCache.data.tv = d; + }) + .catch((e) => { + 'use strict'; + logger.error(e); + }); + calHandler.getSimpleCalV3( + 'https://calendar.google.com/calendar/ical/martind2000%40gmail.com/private-40cfebc9f7dcfa7fde6b9bf2f0092c93/basic.ics') + .then((d) => { + 'use strict'; + todayCache.data.cal.entries = todayCache.data.cal.entries.concat(d.entries); + }) + .catch((e) => { + 'use strict'; + logger.error(e); + }); + calHandler.getSimpleCalV3( + 'https://calendar.google.com/calendar/ical/mt5pgdhknvgoc8usfnrso9vkv0%40group.calendar.google.com/private-58876002af9f302a593acfa6fa792dcf/basic.ics') + .then((d) => { + 'use strict'; + todayCache.data.cal.entries = todayCache.data.cal.entries.concat(d.entries); + }) + .catch((e) => { + 'use strict'; + logger.error(e); + }); + calHandler.getSimpleCalV3( + 'https://www.tripit.com/feed/ical/private/DB96E4BB-94A9BD8F9CC1CF51C6CC0D920840F4F5/tripit.ics') + .then((d) => { + 'use strict'; + todayCache.data.cal.entries = todayCache.data.cal.entries.concat(d.entries); + }) + .catch((e) => { + 'use strict'; + logger.error(e); + }); + swedishWord.getSwedishWord() + .then((d) => { + 'use strict'; + console.log('Swedish result: ', d); + todayCache.data.swedish = d; + }) + .catch((e)=> { + 'use strict'; + console.error(e); + }); + todayCache.date = breakDay(); + // word of the day http://wotd.transparent.com/rss/swedish-widget.xml?t=1455840000000 + // time stamp + } }; - function sendEmailV1() { - - var now = new Date(); - - var email = { - to: 'martind2000@gmail.com', - subject: 'Today - ' + dateFormat(now, "dddd, mmmm dS, yyyy") - }; - - var template = { - file: __dirname + '/' + 'jade/today.jade', - locals: todayCache - }; - - logger.debug(__dirname); - logger.debug(__dirname.substr(__dirname.lastIndexOf('/'), __dirname.length)); - - //if (__dirname.substr(__dirname.lastIndexOf('/'),__dirname.length)) - - mailer.sendTemplate(email, template, function (err) { - if (err) throw err; - logger.info('compiled template email sent'); - }); - - // saveData(); - var fn = jade.compileFile(template.file); - - //console.log(fn(todayCache)); - - // fs.writeFileSync(htmlfile, fn(todayCache)); - + var now = new Date(); + var email = { + to: 'martind2000@gmail.com', subject: 'Today - ' + dateFormat(now, 'dddd, mmmm dS, yyyy') + }; + var template = { + file: __dirname + '/' + 'jade/today.jade', locals: todayCache + }; + logger.debug(__dirname); + logger.debug(__dirname.substr(__dirname.lastIndexOf('/'), __dirname.length)); + // If (__dirname.substr(__dirname.lastIndexOf('/'),__dirname.length)) + mailer.sendTemplate(email, template, function(err) { + if (err) throw err; + logger.info('compiled template email sent'); + }); + // SaveData(); + var fn = jade.compileFile(template.file); + // Console.log(fn(todayCache)); + // Fs.writeFileSync(htmlfile, fn(todayCache)); } - function sendEmail() { - logger.log('Simple email'); - var now = new Date(); - - var email = { - to: 'martind2000@gmail.com', - subject: 'Today - ' + dateFormat(now, "dddd, mmmm dS, yyyy") - }; - - /* mailer.sendText(email, 'Look at this fantastic email body!', function (err) { - if (err) throw err; - console.log('email sent!'); - }); - */ - - saveData(); + logger.log('Simple email'); + var now = new Date(); + var email = { + to: 'martind2000@gmail.com', subject: 'Today - ' + dateFormat(now, 'dddd, mmmm dS, yyyy') + }; + /* Mailer.sendText(email, 'Look at this fantastic email body!', function (err) { + if (err) throw err; + console.log('email sent!'); + }); + */ + saveData(); } - -setTimeout(function () { - module.exports.preLoadToday(); - +setTimeout(function() { + module.exports.preLoadToday(); }, 5000); - -setTimeout(function () { - saveToDB(todayCache); +setTimeout(function() { + saveToDB(todayCache); }, 45000); - -cron.schedule('45 6 * * *', function () { - module.exports.preLoadToday(); - return -1; -}); - -cron.schedule('0 */1 * * *', function () { - module.exports.refreshTrainAndWeather(); - return -1; -}); - -cron.schedule('0 7 * * *', function () { - sendEmailV1(); - saveToDB(todayCache); - // console.log('tick'); - return -1; +cron.schedule('45 6 * * *', function() { + module.exports.preLoadToday(); + return -1; +}); +cron.schedule('0 */1 * * *', function() { + module.exports.refreshTrainAndWeather(); + return -1; +}); +cron.schedule('0 7 * * *', function() { + sendEmailV1(); + saveToDB(todayCache); + // Console.log('tick'); + return -1; }); diff --git a/lib/today/calHandler.js b/lib/today/calHandler.js index ac49c61..cdcbcc6 100644 --- a/lib/today/calHandler.js +++ b/lib/today/calHandler.js @@ -7,228 +7,226 @@ var Elapsed = require('elapsed'); require('sugar-date'); function processICAL(ical) { - "use strict"; - logger.info('+ processICAL'); - var workingBlock = []; - var segments = { - meetingStartID: "DTSTART;TZID=Europe/London:", - meetingStartAlt: 'DTSTART:', - meetingEndID: "DTEND;TZID=Europe/London:", - meetingEndAlt: 'DTEND:', - meetingDescID: "DESCRIPTION:", - summaryID: 'SUMMARY:', - begin: 'BEGIN:VEVENT', - end: 'END:VEVENT', - beginAlarm: 'BEGIN:VALARM', - recur: 'RRULE' + 'use strict'; + logger.info('+ processICAL'); + var workingBlock = []; + var segments = { + meetingStartID: 'DTSTART;TZID=Europe/London:', + meetingStartAlt: 'DTSTART:', + meetingEndID: 'DTEND;TZID=Europe/London:', + meetingEndAlt: 'DTEND:', + meetingDescID: 'DESCRIPTION:', + summaryID: 'SUMMARY:', + begin: 'BEGIN:VEVENT', + end: 'END:VEVENT', + beginAlarm: 'BEGIN:VALARM', + recur: 'RRULE' + }; + + function processBlock(block) { + var workBlock = { + summary: '', + dtstart: null, + dtend: null, + description: '', + timeStart: null, + timeEnd: null, + duration: 0, + combined: '' }; - - function processBlock(block) { - var workBlock = { - summary: '', - dtstart: null, - dtend: null, - description: '', - timeStart: null, - timeEnd: null, - duration: 0, - combined: '' - }; - var alarmFlag = false, ws, blockStep; - for (var step = 0; step < block.length; step++) { - blockStep = block[step]; - if (blockStep.indexOf(segments.summaryID) >= 0) { - workBlock.summary = STRING(block[step].split(segments.summaryID)[1]).collapseWhitespace().s; - } - if (blockStep.indexOf(segments.meetingStartID) >= 0) { - ws = STRING(block[step].split(segments.meetingStartID)[1]).collapseWhitespace().s; - workBlock.dtstart = Date.create(ws); - } - if (blockStep.indexOf(segments.meetingEndID) >= 0) { - ws = STRING(block[step].split(segments.meetingEndID)[1]).collapseWhitespace().s; - workBlock.dtend = Date.create(ws); - } - if (blockStep.indexOf(segments.meetingStartAlt) >= 0) { - ws = STRING(block[step].split(segments.meetingStartAlt)[1]).collapseWhitespace().s; - workBlock.dtstart = Date.create(ws); - } - if (blockStep.indexOf(segments.meetingEndAlt) >= 0) { - ws = STRING(block[step].split(segments.meetingEndAlt)[1]).collapseWhitespace().s; - workBlock.dtend = Date.create(ws); - } - if (blockStep.indexOf(segments.meetingDescID) >= 0) { - if (!alarmFlag) { - workBlock.description = STRING(block[step].split(segments.meetingDescID)[1]).collapseWhitespace().s; - } - } - if (blockStep.indexOf(segments.beginAlarm) >= 0) { - alarmFlag = true; - } + var alarmFlag = false, ws, blockStep; + for (var step = 0; step < block.length; step++) { + blockStep = block[step]; + if (blockStep.indexOf(segments.summaryID) >= 0) { + workBlock.summary = STRING(block[step].split(segments.summaryID)[1]).collapseWhitespace().s; + } + if (blockStep.indexOf(segments.meetingStartID) >= 0) { + ws = STRING(block[step].split(segments.meetingStartID)[1]).collapseWhitespace().s; + workBlock.dtstart = Date.create(ws); + } + if (blockStep.indexOf(segments.meetingEndID) >= 0) { + ws = STRING(block[step].split(segments.meetingEndID)[1]).collapseWhitespace().s; + workBlock.dtend = Date.create(ws); + } + if (blockStep.indexOf(segments.meetingStartAlt) >= 0) { + ws = STRING(block[step].split(segments.meetingStartAlt)[1]).collapseWhitespace().s; + workBlock.dtstart = Date.create(ws); + } + if (blockStep.indexOf(segments.meetingEndAlt) >= 0) { + ws = STRING(block[step].split(segments.meetingEndAlt)[1]).collapseWhitespace().s; + workBlock.dtend = Date.create(ws); + } + if (blockStep.indexOf(segments.meetingDescID) >= 0) { + if (!alarmFlag) { + workBlock.description = STRING(block[step].split(segments.meetingDescID)[1]).collapseWhitespace().s; } - - if (workBlock.dtstart !== null) { - workBlock.timeStart = workBlock.dtstart.format('{12hr}:{mm}:{ss} {tt}'); - workBlock.combined = '' + workBlock.timeStart + ' - '; - } - workBlock.combined = workBlock.combined + workBlock.summary; - if (workBlock.dtend !== null) { - workBlock.timeEnd = workBlock.dtend.format('{12hr}:{mm}:{ss} {tt}'); - } - if (workBlock.dtstart !== null && workBlock.dtend !== null) { - var elapsedTime = new Elapsed(workBlock.dtstart, workBlock.dtend); - workBlock.duration = elapsedTime.optimal; - workBlock.combined = workBlock.combined + ', ' + elapsedTime.optimal; - } - - return workBlock; + } + if (blockStep.indexOf(segments.beginAlarm) >= 0) { + alarmFlag = true; + } } - var lines = ical.split('\r\n'), l = lines.length, counter = 0; - - while (counter < l) { - if (lines[counter].indexOf(segments.begin) < 0) { - counter++; - } else { - var subcounter = 0, subBlock = []; - while (subcounter < 75) { - if (lines[counter + subcounter].indexOf(segments.end) < 0) { - subBlock.push(lines[counter + subcounter]); - subcounter++; - } - else { - break; - } - } - counter = counter + subcounter; - var b = processBlock(subBlock); - if (b.dtstart !== null) { - workingBlock.push(b); - } - - } + if (workBlock.dtstart !== null) { + workBlock.timeStart = workBlock.dtstart.format('{12hr}:{mm}:{ss} {tt}'); + workBlock.combined = '' + workBlock.timeStart + ' - '; + } + workBlock.combined = workBlock.combined + workBlock.summary; + if (workBlock.dtend !== null) { + workBlock.timeEnd = workBlock.dtend.format('{12hr}:{mm}:{ss} {tt}'); + } + if (workBlock.dtstart !== null && workBlock.dtend !== null) { + var elapsedTime = new Elapsed(workBlock.dtstart, workBlock.dtend); + workBlock.duration = elapsedTime.optimal; + workBlock.combined = workBlock.combined + ', ' + elapsedTime.optimal; } - logger.info('- processICAL'); - // if (workingBlock.dtstart == null) return {}; - return workingBlock; + return workBlock; + } + + var lines = ical.split('\r\n'), l = lines.length, counter = 0; + + while (counter < l) { + if (lines[counter].indexOf(segments.begin) < 0) { + counter++; + } else { + var subcounter = 0, subBlock = []; + while (subcounter < 75) { + if (lines[counter + subcounter].indexOf(segments.end) < 0) { + subBlock.push(lines[counter + subcounter]); + subcounter++; + } else { + break; + } + } + counter = counter + subcounter; + var b = processBlock(subBlock); + if (b.dtstart !== null) { + workingBlock.push(b); + } + + } + } + logger.info('- processICAL'); + // If (workingBlock.dtstart == null) return {}; + + return workingBlock; } module.exports = { - jsonBlock: [], - getTodaysSimple: function () { - "use strict"; - logger.info('+ getTodaysSimple'); - var today = { - entries: [] - }; + jsonBlock: [], + getTodaysSimple: function() { + 'use strict'; + logger.info('+ getTodaysSimple'); + var today = { + entries: [] + }; - for (var t = 0; t < this.jsonBlock.length; t++) { - if (this.jsonBlock[t].dtstart.isToday()) { + for (var t = 0; t < this.jsonBlock.length; t++) { + if (this.jsonBlock[t].dtstart.isToday()) { - today.entries.push(this.jsonBlock[t]); - } - } - // logger.debug(today); - logger.info('- getTodaysSimple'); - return today; - }, - getTodaysMeetings: function () { - "use strict"; - logger.info('+ getTodaysMeetings'); - var today = { - previous: [], upcoming: [], current: {} - }; - var now = new Date(); + today.entries.push(this.jsonBlock[t]); + } + } + // Logger.debug(today); + logger.info('- getTodaysSimple'); + return today; + }, + getTodaysMeetings: function() { + 'use strict'; + logger.info('+ getTodaysMeetings'); + var today = { + previous: [], upcoming: [], current: {} + }; + var now = new Date(); - for (var t = 0; t < this.jsonBlock.length; t++) { - if (this.jsonBlock[t].dtstart.isToday()) { + for (var t = 0; t < this.jsonBlock.length; t++) { + if (this.jsonBlock[t].dtstart.isToday()) { - if (this.jsonBlock[t].dtstart.isAfter(now)) { - today.upcoming.push(this.jsonBlock[t]); - } - else { - today.previous.push(this.jsonBlock[t]); - } - - if (now.isBetween(this.jsonBlock[t].dtstart, this.jsonBlock[t].dtend)) { - today.current = this.jsonBlock[t]; - } - } - } - // logger.debug(today); - logger.info('- getTodaysMeetings'); - return today; - }, getSimpleCalV2: function (url, cb) { - "use strict"; - var self = this; - - // var calJson = []; - try { - request(url, function (err, res, body) { - if (err) { - logger.error('Get remote Calendar Request failed'); - // callback.call(null, new Error('Request failed')); - return; - } - - self.jsonBlock = processICAL(body); - - // logger.debug(self.jsonBlock); - var st = self.getTodaysSimple(); - - if (typeof cb === 'function') { - cb(st); - } - }, function (error, response, body) { - if (response.statusCode !== 200) { - logger.error(response.statusCode); - logger.error(body); - } - }); - } catch (e) { - console.log(e); + if (this.jsonBlock[t].dtstart.isAfter(now)) { + today.upcoming.push(this.jsonBlock[t]); + } else { + today.previous.push(this.jsonBlock[t]); } - },getSimpleCalV3: function (url) { - "use strict"; - var self = this; + if (now.isBetween(this.jsonBlock[t].dtstart, this.jsonBlock[t].dtend)) { + today.current = this.jsonBlock[t]; + } + } + } + // Logger.debug(today); + logger.info('- getTodaysMeetings'); + return today; + }, getSimpleCalV2: function(url, cb) { + 'use strict'; + var self = this; - return new Promise(function(resolve, reject) { - try { - request(url, function (err, res, body) { - if (err) { - // logger.error(err); - return reject(err); - // throw err; - } + // Var calJson = []; + try { + request(url, function(err, res, body) { + if (err) { + logger.error('Get remote Calendar Request failed'); + // Callback.call(null, new Error('Request failed')); + return; + } - self.jsonBlock = processICAL(body); + self.jsonBlock = processICAL(body); - // logger.debug(self.jsonBlock); - var st = self.getTodaysSimple(); - - return resolve(st); - }, function (error, response, body) { - if (response.statusCode !== 200) { - logger.error(response.statusCode); - logger.error(body); - return reject(error); - } - }); - } catch (e) { - console.log(e); - return reject(e); - } - - }); - - // var calJson = []; + // Logger.debug(self.jsonBlock); + var st = self.getTodaysSimple(); + if (typeof cb === 'function') { + cb(st); + } + }, function(error, response, body) { + if (response.statusCode !== 200) { + logger.error(response.statusCode); + logger.error(body); + } + }); + } catch (e) { + console.log(e); } + }, getSimpleCalV3: function(url) { + 'use strict'; + var self = this; + + return new Promise(function(resolve, reject) { + try { + request(url, function(err, res, body) { + if (err) { + // Logger.error(err); + return reject(err); + // Throw err; + } + + self.jsonBlock = processICAL(body); + + // Logger.debug(self.jsonBlock); + var st = self.getTodaysSimple(); + + return resolve(st); + }, function(error, response, body) { + if (response.statusCode !== 200) { + logger.error(response.statusCode); + logger.error(body); + return reject(error); + } + }); + } catch (e) { + console.log(e); + return reject(e); + } + + }); + + // Var calJson = []; + + } - /** - * Created by Martin on 16/02/2016. - */ + + /** + * Created by Martin on 16/02/2016. + */ }; diff --git a/lib/today/history.js b/lib/today/history.js index f7f4f9c..480bec5 100644 --- a/lib/today/history.js +++ b/lib/today/history.js @@ -1,160 +1,159 @@ -/** - * Created by Martin on 31/03/2016. - */ -var request = require('request'), cheerio = require('cheerio') +var request = require('request'); +var cheerio = require('cheerio'); var STRING = require('string'); var logger = require('log4js').getLogger(); module.exports = { - getTechHistory: function () { - var url, d, day, month, monthNames = [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ]; + getTechHistory: function() { + var url; + var d; + var day; + var month; + var monthNames = [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December' + ]; - d = new Date(); + d = new Date(); - month = monthNames[d.getMonth()]; + month = monthNames[d.getMonth()]; - day = d.getDate(); + day = d.getDate(); - url = ['http://www.computerhistory.org/tdih/', month, '/', day].join(''); - logger.debug(url); - return new Promise(function (resolve, reject) { - "use strict"; + 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; - } + request(url, function(err, resp, body) { + if (err) { + // Logger.error(err); + return reject(err); + // Throw err; + } - $ = cheerio.load(body); - var tdihbody = $('#tdihbody'); + var $ = cheerio.load(body); + var tdihbody = $('#tdihbody'); - var output = []; - - tdihbody.find('.tdihevent > p').each(function (div) { - var s = $(this).text(); - output.push(STRING(s).collapseWhitespace().s); - }); - //todayCache.data.history = todayCache.data.history.concat(output); - // logger.info(todayCache.data.history); - - return resolve(output); - }, function (error, response, body) { - if (response.statusCode !== 200) { - logger.error(response.statusCode); - logger.error(body); - return reject(error); - } - }); - }); - - }, getHistory: function () { - var url, d, day, month, 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.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; - } - - $ = cheerio.load(body); - - var body = $('DIV#bbcPageContent').first(); - var output = []; - - body.find('.story > p').each(function (div) { - - var s = $(this).text(); - if (s.indexOf('Today\'s recipe:') == -1) { - output.push(s); - } - }); - - return resolve(output); - // todayCache.data.history = todayCache.data.history.concat(output); - // logger.info(todayCache.data.history); - // module.getTechHistory(); - - }, function (error, response, body) { - if (response.statusCode !== 200) { - logger.error(response.statusCode); - logger.error(body); - return reject(error); - } - }); - - }); - - }, - updateHistory: function () { - "use strict"; var output = []; - return new Promise(function (resolve, reject) { - module.exports.getHistory() + + tdihbody.find('.tdihevent > p').each(function(div) { + var 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() { + var url; + var d = new Date(); + var day; + var month; + var 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; + } + + var $ = cheerio.load(body); + + var nbody = $('DIV#bbcPageContent').first(); + var output = []; + + nbody.find('.story > p').each(function(div) { + + var 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'; + var output = []; + return new Promise(function(resolve, reject) { + module.exports.getHistory() .then((d)=> { - output = d; + output = d; - module.exports.getTechHistory() + module.exports.getTechHistory() .then((d) => { - output = output.concat(d); + output = output.concat(d); - return resolve(output) + return resolve(output) }) .catch((e) => { - logger.error(e); - return reject(e); + logger.error(e); + return reject(e); }); }) .catch((e) => { - logger.error(e); - return reject(e); + logger.error(e); + return reject(e); }); - }) - } + }) + } }; \ No newline at end of file