var express = require('express'); var router = express.Router(); var dbSermons = require('../../database/sermons'); var dbEvents = require('../../database/events'); const calendarImageUrl = '/api2/cim/'; const eventUrl = '/api2/share/e'; const sermonImageUrl = '/assets/images/tiny/facebookplay.png'; const sermonUrl = '/api2/share/s'; const otherUrl = '/api2/share/o'; router.get("/:shareCode",function(req,res){ var fullUrl = req.protocol + '://' + req.hostname + req.originalUrl; console.log("Full"); console.log(fullUrl); var sharecode = req.params.shareCode; var type = sharecode.substring(0,1); var param = sharecode.substring(1); console.log("type: " + type + "; param: " + param); switch(type){ case "s": return getSermon(req, res, param); case "e": return getEvent(req,res,param); case "o": return getOther(req, res, param) } }); function getOther(req, res, param) { param = decodeURIComponent(param); var params = JSON.parse(param); var userAgent = req.headers['user-agent']; var userAgentOverride = req.headers['user-agent-override']; var referrer = req.headers['referer'] || ""; userAgent = userAgentOverride || userAgent; if (userAgent.startsWith('facebookexternalhit/1.1') || userAgent === 'Facebot' || userAgent.startsWith('Twitterbot') || referrer.startsWith('http://opengraphcheck.com')) { getOtherMeta(req, res, params.title, params.description, params.imageUrl, params.imageWidth, params.imageHeight, params.url); } else { var url = params.url || (req.protocol + "://" + req.hostname); res.redirect(url); } } function getSermon(req, res, id){ console.log(req.headers); var userAgent = req.headers['user-agent']; var userAgentOverride = req.headers['user-agent-override']; var referrer = req.headers['referer'] || ""; userAgent = userAgentOverride || userAgent; if (userAgent.startsWith('facebookexternalhit/1.1') || userAgent === 'Facebot' || userAgent.startsWith('Twitterbot') || referrer.startsWith('http://opengraphcheck.com')) { getSermonMeta(req, res, id); } else { var url = req.protocol + "://" + req.hostname + "/sermons/" + id; res.redirect(url); } } function getOtherMeta(req, res, title, description, imageUrl, imageWidth, imageHeight, url) { imageWidth = imageWidth || 200; imageHeight = imageHeight || 200; url = req.protocol + '//' + req.hostname + otherUrl + encodeURIComponent(url); var result = ` Old Fashion Baptist Church `; res.set('Content-Type', 'text/html'); res.send(new Buffer(result)); } function getSermonMeta(req, res, id){ dbSermons.getSermon(id,function(error,sermon){ if (error){ res.status(404).json({"status":404,"message":"Error processing request"}); return; } if (sermon == null){ res.status(404).json({"status":404,"message":"Sermon does not exist"}); return; } var port = req.socket.localPort; var imageUrl = req.protocol + "://" + req.hostname + sermonImageUrl; var srmnUrl = req.protocol + "://" + req.hostname + sermonUrl + sermon.id; var result = ` Old Fashion Baptist Church `; res.set('Content-Type', 'text/html'); res.send(new Buffer(result)); }); } function getEvent(req, res, id){ var userAgent = req.headers['user-agent']; var userAgentOverride = req.headers['user-agent-override']; var referrer = req.headers['referer'] || ""; userAgent = userAgentOverride || userAgent; if (userAgent.startsWith('facebookexternalhit/1.1') || userAgent === 'Facebot' || userAgent.startsWith('Twitterbot' || referrer.startsWith('http://opengraphcheck.com'))) { getEventMeta(req, res, id); } else { var url = req.protocol + "://" + req.hostname + "/events/" + id; res.redirect(url); } } function getEventMeta(req, res, id){ dbEvents.getEvent(id,function(error,event){ if (error){ res.status(404).json({"status":404,"message":"Error processing request"}); return; } if (event == null){ res.status(404).json({"status":404,"message":"Event does not exist"}); return; } var startDate = event.startDate; //Calculate time with local timezone offset but keep it in UTC startDate.setTime(startDate.getTime() - event.timezoneOffset * 60 * 1000); var monthNum = startDate.getMonth(); var monthName = MONTHS_FULL[monthNum]; var day = startDate.getDate(); var port = req.socket.localPort; var imageUrl = req.protocol + "://" + req.hostname + calendarImageUrl + monthName + "/" + day; var evntUrl = req.protocol + "://" + req.hostname + eventUrl + event.id; var result = ` Old Fashion Baptist Church `; res.set('Content-Type', 'text/html'); res.send(new Buffer(result)); }); } function dateToString(dte){ var val = dte.toLocaleString([],{ day: 'numeric', month: 'numeric', year: 'numeric', hour: 'numeric', minute:'2-digit'}); var month = dte.getUTCMonth() + 1; var day = dte.getUTCDate(); var year = dte.getUTCFullYear(); var hour = dte.getUTCHours(); var minute = dte.getUTCMinutes(); minute < 10 ? "0" + minute : minute; var pmOrAm = hour > 11 ? " PM" : " AM"; hour = hour > 11 ? hour - 12 : hour; val = month + "/" + day + "/" + year + " - " + hour + (minute > 0 ? ":" + minute : "") + pmOrAm; console.log(val); return val; } const MONTHS_FULL = { 0: "JANUARY", 1: "FEBRUARY", 2: "MARCH", 3: "APRIL", 4: "MAY", 5: "JUNE", 6: "JULY", 7: "AUGUST", 8: "SEPTEMBER", 9: "OCTOBER", 10: "NOVEMBER", 11: "DECEMBER" }; module.exports = router;