Add share routes
parent
08e6cd06d0
commit
7cd279352e
|
|
@ -66,7 +66,7 @@ export class EventLargeComponent implements AfterContentInit {
|
||||||
var monthNum = this.startDate.getMonth();
|
var monthNum = this.startDate.getMonth();
|
||||||
var monthName = '';
|
var monthName = '';
|
||||||
monthName = MONTHS_FULL[monthNum];
|
monthName = MONTHS_FULL[monthNum];
|
||||||
return "/cim/" + monthName + "/" + this.startDate.getDate();
|
return "/api2/cim/" + monthName + "/" + this.startDate.getDate();
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(private dialog: MdDialog){
|
constructor(private dialog: MdDialog){
|
||||||
|
|
@ -84,7 +84,7 @@ export class EventLargeComponent implements AfterContentInit {
|
||||||
|
|
||||||
share(){
|
share(){
|
||||||
let opts = new MdDialogConfig;
|
let opts = new MdDialogConfig;
|
||||||
opts.data = { prefix: 'd', id: this.id, title: this.title, description: this.description };
|
opts.data = { prefix: 'e', id: this.id, title: this.title, description: this.description };
|
||||||
let dialog = this.dialog.open(SharePopupComponent, opts);
|
let dialog = this.dialog.open(SharePopupComponent, opts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ export class SharePopupComponent implements OnInit {
|
||||||
public twitterUrl: string;
|
public twitterUrl: string;
|
||||||
private id: string;
|
private id: string;
|
||||||
public facebookIframeUrl: string;
|
public facebookIframeUrl: string;
|
||||||
private shareBaseUrl: string = "https://ofbbutte.com/api/share/";
|
private shareBaseUrl: string = "https://ofbbutte.com/api2/share/";
|
||||||
public shareUrl: string;
|
public shareUrl: string;
|
||||||
|
|
||||||
constructor(@Inject(MD_DIALOG_DATA) public data: any, private mdDialogRef: MdDialogRef<SharePopupComponent>, private snackbar: MdSnackBar) {
|
constructor(@Inject(MD_DIALOG_DATA) public data: any, private mdDialogRef: MdDialogRef<SharePopupComponent>, private snackbar: MdSnackBar) {
|
||||||
|
|
|
||||||
|
|
@ -4,14 +4,10 @@ const path = require('path');
|
||||||
const { execFile } = require('child_process');
|
const { execFile } = require('child_process');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
||||||
app.use('/api/share/*',function(req,res){
|
app.use('/api2/share',require('./routes/share'));
|
||||||
console.log(req.originalUrl);
|
|
||||||
var fullUrl = req.protocol + '://' + req.hostname + req.originalUrl;
|
|
||||||
res.send(fullUrl);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
app.get('/api/cim/:month/:day',function(req,res){
|
app.get('/api2/cim/:month/:day',function(req,res){
|
||||||
console.log(__dirname);
|
console.log(__dirname);
|
||||||
var file = __dirname + '/calendar_image_maker/generated_images/' + req.params.month + '_' + req.params.day + '.png';
|
var file = __dirname + '/calendar_image_maker/generated_images/' + req.params.month + '_' + req.params.day + '.png';
|
||||||
if (fs.existsSync(file)){
|
if (fs.existsSync(file)){
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
var mysql = require("mysql");
|
||||||
|
|
||||||
|
module.exports = mysql.createConnection({
|
||||||
|
user: "ofbapi",
|
||||||
|
password: "87hjdusiodksyeunsjkdis7",
|
||||||
|
database: "ofb",
|
||||||
|
multipleStatements: true
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
var connection = require("./connection");
|
||||||
|
var dbEvents = this;
|
||||||
|
|
||||||
|
exports.getEvent = function(eventId, callback, includeDeleted){
|
||||||
|
var query = "SELECT * FROM Events WHERE Id = ? AND DeletedDate IS NULL;";
|
||||||
|
if (includeDeleted === true){
|
||||||
|
query = "SELECT * FROM Events WHERE Id = ?;";
|
||||||
|
}
|
||||||
|
connection.query(query,[eventId],function(error,rows,fields){
|
||||||
|
if (error){
|
||||||
|
console.log(error);
|
||||||
|
callback(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var event = null;
|
||||||
|
if (rows.length > 0){
|
||||||
|
event = {};
|
||||||
|
event.id = rows[0].Id;
|
||||||
|
event.startDate = rows[0].StartDate;
|
||||||
|
event.endDate = rows[0].EndDate;
|
||||||
|
event.title = rows[0].Title;
|
||||||
|
event.description = rows[0].Description;
|
||||||
|
}
|
||||||
|
callback(null,event);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
exports.getEvents = function(pageSize, pageNumber,callback){
|
||||||
|
var cd = new Date();
|
||||||
|
var offset = (pageNumber - 1) * pageSize;
|
||||||
|
connection.query("SELECT * FROM Events WHERE DeletedDate IS NULL AND StartDate >= ? ORDER BY StartDate ASC LIMIT ?,?;",[cd,offset,pageSize],function(err,rows,fields){
|
||||||
|
if (err){
|
||||||
|
console.log(err);
|
||||||
|
callback(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var events = [];
|
||||||
|
for (var i = 0; i < rows.length; i++){
|
||||||
|
var event = {};
|
||||||
|
event.id = rows[i].Id;
|
||||||
|
event.startDate = rows[i].StartDate;
|
||||||
|
event.endDate = rows[i].EndDate;
|
||||||
|
event.title = rows[i].Title;
|
||||||
|
event.description = rows[i].Description;
|
||||||
|
events.push(event);
|
||||||
|
}
|
||||||
|
console.log(events);
|
||||||
|
callback(null,events);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.insertEvent = function(titleOrEventObject, startDateOrCallbackFunction, endDate, description, callback){
|
||||||
|
if (typeof startDateOrCallbackFunction === 'function'){
|
||||||
|
insertEventFromObject(titleOrEventObject, startDateOrCallbackFunction);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//date string needs to be in the following format: yyyy-mm-dd-hh-mm
|
||||||
|
var startDte = new Date(startDateOrCallbackFunction);
|
||||||
|
var endDte = new Date(endDate);
|
||||||
|
connection.query("INSERT INTO Events (CreatedDate,ModifiedDate,Id,Title,StartDate,EndDate,Description) VALUES(CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,NULL,?,?,?,?)",[titleOrEventObject,startDte,endDte,description],function(error,result){
|
||||||
|
if (error){
|
||||||
|
console.log(error);
|
||||||
|
callback(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dbEvents.getEvent(result.insertId,function(error,event){
|
||||||
|
if (error){
|
||||||
|
callback(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
callback(null,event);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function insertEventFromObject(event, callback){
|
||||||
|
dbSermons.insertSermon(event.title,event.startDate,event.endDate,evvent.description,callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.deleteEvent = function(eventIdOrEventObject, callback){
|
||||||
|
if (typeof eventIdOrEventObject !== 'number'){
|
||||||
|
eventIdOrEventObject = eventIdOrEventObject.id;
|
||||||
|
}
|
||||||
|
connection.query("UPDATE Events SET DeletedDate = CURRENT_TIMESTAMP WHERE Id = ?;",[eventIdOrEventObject],function(error,result){
|
||||||
|
if (error){
|
||||||
|
console.log(error);
|
||||||
|
callback(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dbSermons.getEvent(eventIdOrEventObject,function(error,event){
|
||||||
|
if (error){
|
||||||
|
callback(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log(event);
|
||||||
|
callback(null,{"affectedRows":result.affectedRows,"event":event});
|
||||||
|
},true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,155 @@
|
||||||
|
var connection = require("./connection");
|
||||||
|
var dbSermons = this;
|
||||||
|
|
||||||
|
exports.getSermon = function(sermonId, callback, includeDeleted){
|
||||||
|
var query = "SELECT * FROM Sermons WHERE Id = ? AND DeletedDate IS NULL;";
|
||||||
|
if (includeDeleted === true){
|
||||||
|
query = "SELECT * FROM Sermons WHERE Id = ?;";
|
||||||
|
}
|
||||||
|
connection.query(query,[sermonId],function(error,rows,fields){
|
||||||
|
if (error){
|
||||||
|
console.log(error);
|
||||||
|
callback(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var sermon = null;
|
||||||
|
if (rows.length > 0){
|
||||||
|
sermon = {};
|
||||||
|
sermon.id = rows[0].Id;
|
||||||
|
sermon.date = rows[0].Date;
|
||||||
|
sermon.title = rows[0].Title;
|
||||||
|
sermon.author = rows[0].Author;
|
||||||
|
sermon.description = rows[0].Description;
|
||||||
|
sermon.file = rows[0].File;
|
||||||
|
}
|
||||||
|
callback(null,sermon);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
exports.getSermons = function(pageSize, pageNumber,callback){
|
||||||
|
var offset = (pageNumber - 1) * pageSize;
|
||||||
|
connection.query("SELECT * FROM Sermons WHERE DeletedDate IS NULL ORDER BY Date DESC LIMIT ?,?;",[offset,pageSize],function(err,rows,fields){
|
||||||
|
if (err){
|
||||||
|
console.log(err);
|
||||||
|
callback(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var sermons = [];
|
||||||
|
for (var i = 0; i < rows.length; i++){
|
||||||
|
var sermon = {};
|
||||||
|
sermon.id = rows[i].Id;
|
||||||
|
sermon.date = rows[i].Date;
|
||||||
|
sermon.title = rows[i].Title;
|
||||||
|
sermon.author = rows[i].Author;
|
||||||
|
sermon.description = rows[i].Description;
|
||||||
|
sermon.file = rows[i].File;
|
||||||
|
sermons.push(sermon);
|
||||||
|
}
|
||||||
|
callback(null,sermons);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.searchSermons = function(pageSize, pageNumber, searchTerm, callback){
|
||||||
|
var offset = (pageNumber - 1) * pageSize;
|
||||||
|
searchTerm = '%' + searchTerm + '%';
|
||||||
|
connection.query("SELECT * FROM Sermons WHERE DeletedDate IS NULL AND (Title LIKE ? OR Author LIKE ? OR Description LIKE ? OR Date LIKE ?) ORDER BY Id DESC LIMIT ?,?;",[searchTerm,searchTerm,searchTerm,searchTerm,offset,pageSize],function(err,rows,fields){
|
||||||
|
if (err){
|
||||||
|
console.log(err);
|
||||||
|
callback(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var sermons = [];
|
||||||
|
for (var i = 0; i < rows.length; i++){
|
||||||
|
var sermon = {};
|
||||||
|
sermon.id = rows[i].Id;
|
||||||
|
sermon.date = rows[i].Date;
|
||||||
|
sermon.title = rows[i].Title;
|
||||||
|
sermon.author = rows[i].Author;
|
||||||
|
sermon.description = rows[i].Description;
|
||||||
|
sermon.file = rows[i].File;
|
||||||
|
sermons.push(sermon);
|
||||||
|
}
|
||||||
|
callback(null,sermons);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.insertSermon = function(dateOrSermonObject, titleOrCallbackFunction, author, description, file, callback){
|
||||||
|
if (typeof title === 'function'){
|
||||||
|
insertSermonFromObject(dateOrSermonObject,titleOrCallbackFunction);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//date string needs to be in the following format: yyyy-mm-dd-hh-mm
|
||||||
|
var str = dateOrSermonObject.split(/\D/);
|
||||||
|
dateOrSermonObject = new Date(str[0],--str[1],str[2],str[3],str[4]);
|
||||||
|
connection.query("INSERT INTO Sermons (CreatedDate,ModifiedDate,Id,Date,Title,Author,Description,File) VALUES(?,CURRENT_TIMESTAMP,NULL,?,?,?,?,?)",[new Date,dateOrSermonObject,titleOrCallbackFunction,author,description,file],function(error,result){
|
||||||
|
if (error){
|
||||||
|
console.log(error);
|
||||||
|
callback(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dbSermons.getSermon(result.insertId,function(error,sermon){
|
||||||
|
if (error){
|
||||||
|
callback(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
callback(null,sermon);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function insertSermonFromObject(sermon, callback){
|
||||||
|
dbSermons.insertSermon(sermon.date,sermon.title,sermon.author,sermon.description,sermon.file,callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.updateSermon = function(sermonIdOrSermonObject, dateOrCallbackFunction, title, author, description, callback){
|
||||||
|
if (typeof dateOrCallbackFunction == 'function'){
|
||||||
|
updateSermonFromObject(sermonIdOrSermonObject,callback);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (typeof dateOrCallbackFunction != 'date'){
|
||||||
|
//date string needs to be in the following format: yyyy-mm-dd-hh-mm
|
||||||
|
var str = dateOrCallbackFunction.split(/\D/);
|
||||||
|
dateOrCallbackFunction = new Date(str[0],--str[1],str[2],str[3],str[4]);
|
||||||
|
}
|
||||||
|
connection.query("UPDATE Sermons SET ModifiedDate = CURRENT_TIMESTAMP, Date = ?, Title = ?, Author = ?, Description = ? WHERE Id = ?",[dateOrCallbackFunction,title,author,description,sermonIdOrSermonObject],function(error,result){
|
||||||
|
if (error){
|
||||||
|
console.log(error);
|
||||||
|
callback(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dbSermons.getSermon(sermonIdOrSermonObject,function(error,sermon){
|
||||||
|
if (error){
|
||||||
|
callback(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
callback(null,{"changedRows":result.changedRows,"sermon":sermon});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
function updateSermonFromObject(sermon, callback){
|
||||||
|
dbSermons.updateSermon(sermon.id,sermon.date,sermon.title,sermon.author,sermon.description,callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.deleteSermon = function(sermonIdOrSermonObject, callback){
|
||||||
|
if (typeof sermonIdOrSermonObject !== 'number'){
|
||||||
|
sermonIdOrSermonObject = sermonIdOrSermonObject.id;
|
||||||
|
}
|
||||||
|
connection.query("UPDATE Sermons SET DeletedDate = CURRENT_TIMESTAMP WHERE Id = ?;",[sermonIdOrSermonObject],function(error,result){
|
||||||
|
if (error){
|
||||||
|
console.log(error);
|
||||||
|
callback(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dbSermons.getSermon(sermonIdOrSermonObject,function(error,sermon){
|
||||||
|
if (error){
|
||||||
|
callback(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log(sermon);
|
||||||
|
callback(null,{"affectedRows":result.affectedRows,"sermon":sermon});
|
||||||
|
},true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
@ -18,6 +18,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||||
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
|
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
|
||||||
},
|
},
|
||||||
|
"bignumber.js": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.0.2.tgz",
|
||||||
|
"integrity": "sha1-LR3DfuWWiGfs6pC22k0W5oYI0h0="
|
||||||
|
},
|
||||||
"content-disposition": {
|
"content-disposition": {
|
||||||
"version": "0.5.2",
|
"version": "0.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
|
||||||
|
|
@ -38,6 +43,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||||
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
|
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
|
||||||
},
|
},
|
||||||
|
"core-util-is": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||||
|
},
|
||||||
"debug": {
|
"debug": {
|
||||||
"version": "2.6.8",
|
"version": "2.6.8",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
|
||||||
|
|
@ -156,6 +166,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz",
|
||||||
"integrity": "sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA="
|
"integrity": "sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA="
|
||||||
},
|
},
|
||||||
|
"isarray": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
||||||
|
},
|
||||||
"media-typer": {
|
"media-typer": {
|
||||||
"version": "0.3.0",
|
"version": "0.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
|
||||||
|
|
@ -194,6 +209,17 @@
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||||
},
|
},
|
||||||
|
"mysql": {
|
||||||
|
"version": "2.14.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/mysql/-/mysql-2.14.1.tgz",
|
||||||
|
"integrity": "sha512-ZPXqQeYH7L1QPDyC77Rcp32cNCQnNjz8Y4BbF17tOjm5yhSfjFa3xS4PvuxWJtEEmwVc4ccI7sSntj4eyYRq0A==",
|
||||||
|
"requires": {
|
||||||
|
"bignumber.js": "4.0.2",
|
||||||
|
"readable-stream": "2.3.3",
|
||||||
|
"safe-buffer": "5.1.1",
|
||||||
|
"sqlstring": "2.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"negotiator": {
|
"negotiator": {
|
||||||
"version": "0.6.1",
|
"version": "0.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
|
||||||
|
|
@ -217,6 +243,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||||
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
|
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
|
||||||
},
|
},
|
||||||
|
"process-nextick-args": {
|
||||||
|
"version": "1.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
|
||||||
|
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
|
||||||
|
},
|
||||||
"proxy-addr": {
|
"proxy-addr": {
|
||||||
"version": "1.1.5",
|
"version": "1.1.5",
|
||||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz",
|
||||||
|
|
@ -236,6 +267,25 @@
|
||||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
|
||||||
"integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
|
"integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
|
||||||
},
|
},
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "2.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
|
||||||
|
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
|
||||||
|
"requires": {
|
||||||
|
"core-util-is": "1.0.2",
|
||||||
|
"inherits": "2.0.3",
|
||||||
|
"isarray": "1.0.0",
|
||||||
|
"process-nextick-args": "1.0.7",
|
||||||
|
"safe-buffer": "5.1.1",
|
||||||
|
"string_decoder": "1.0.3",
|
||||||
|
"util-deprecate": "1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"safe-buffer": {
|
||||||
|
"version": "5.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
||||||
|
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
|
||||||
|
},
|
||||||
"send": {
|
"send": {
|
||||||
"version": "0.15.4",
|
"version": "0.15.4",
|
||||||
"resolved": "https://registry.npmjs.org/send/-/send-0.15.4.tgz",
|
"resolved": "https://registry.npmjs.org/send/-/send-0.15.4.tgz",
|
||||||
|
|
@ -272,11 +322,24 @@
|
||||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
|
||||||
"integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
|
"integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
|
||||||
},
|
},
|
||||||
|
"sqlstring": {
|
||||||
|
"version": "2.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.2.0.tgz",
|
||||||
|
"integrity": "sha1-wxNcTqirzX5+50GklmqJHYak8ZE="
|
||||||
|
},
|
||||||
"statuses": {
|
"statuses": {
|
||||||
"version": "1.3.1",
|
"version": "1.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
|
||||||
"integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
|
"integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
|
||||||
},
|
},
|
||||||
|
"string_decoder": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
|
||||||
|
"requires": {
|
||||||
|
"safe-buffer": "5.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"type-is": {
|
"type-is": {
|
||||||
"version": "1.6.15",
|
"version": "1.6.15",
|
||||||
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
|
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
|
||||||
|
|
@ -291,6 +354,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||||
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
|
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
|
||||||
},
|
},
|
||||||
|
"util-deprecate": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||||
|
},
|
||||||
"utils-merge": {
|
"utils-merge": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"express": "^4.15.4"
|
"express": "^4.15.4",
|
||||||
|
"mysql": "^2.14.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,18 @@ var express = require('express');
|
||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
|
|
||||||
var dbSermons = require('../database/sermons');
|
var dbSermons = require('../database/sermons');
|
||||||
|
var dbEvents = require('../database/events');
|
||||||
|
|
||||||
|
const calendarImageUrl = '/api2/cim/';
|
||||||
|
const eventUrl = '/api2/share/e';
|
||||||
|
const sermonImageUrl = '/assets/images/facebookplay.png';
|
||||||
|
const sermonUrl = '/sermons/s';
|
||||||
|
|
||||||
|
|
||||||
router.get("/:shareCode",function(req,res){
|
router.get("/:shareCode",function(req,res){
|
||||||
|
var fullUrl = req.protocol + '://' + req.hostname + ':' + req.socket.localPort + req.originalUrl;
|
||||||
|
console.log("Full");
|
||||||
|
console.log(fullUrl);
|
||||||
var sharecode = req.params.shareCode;
|
var sharecode = req.params.shareCode;
|
||||||
var type = sharecode.substring(0,1);
|
var type = sharecode.substring(0,1);
|
||||||
var param = sharecode.substring(1);
|
var param = sharecode.substring(1);
|
||||||
|
|
@ -20,16 +29,18 @@ router.get("/:shareCode",function(req,res){
|
||||||
|
|
||||||
function getSermon(req, res, id){
|
function getSermon(req, res, id){
|
||||||
var userAgent = req.headers['user-agent'];
|
var userAgent = req.headers['user-agent'];
|
||||||
|
var userAgentOverride = req.headers['user-agent-override'];
|
||||||
|
userAgent = userAgentOverride || userAgent;
|
||||||
if (userAgent.startsWith('facebookexternalhit/1.1') ||
|
if (userAgent.startsWith('facebookexternalhit/1.1') ||
|
||||||
userAgent === 'Facebot' ||
|
userAgent === 'Facebot' ||
|
||||||
userAgent.startsWith('Twitterbot')) {
|
userAgent.startsWith('Twitterbot')) {
|
||||||
getSermonMeta(res, id);
|
getSermonMeta(req, res, id);
|
||||||
} else {
|
} else {
|
||||||
res.redirect("https://ofbbutte.com/sermons/" + id);
|
res.redirect("https://ofbbutte.com/sermons/" + id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getSermonMeta(res, id){
|
function getSermonMeta(req, res, id){
|
||||||
dbSermons.getSermon(id,function(error,sermon){
|
dbSermons.getSermon(id,function(error,sermon){
|
||||||
if (error){
|
if (error){
|
||||||
res.status(404).json({"status":404,"message":"Error processing request"});
|
res.status(404).json({"status":404,"message":"Error processing request"});
|
||||||
|
|
@ -40,16 +51,20 @@ function getSermonMeta(res, id){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var port = req.socket.localPort;
|
||||||
|
var imageUrl = req.protocol + "://" + req.hostname + ":" + port + sermonImageUrl;
|
||||||
|
var srmnUrl = req.protocol + "://" + req.hostname + ":" + port + sermonUrl + sermon.id;
|
||||||
|
|
||||||
var result = `<html>
|
var result = `<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Old Fashion Baptist Church</title>
|
<title>Old Fashion Baptist Church</title>
|
||||||
<!-- You can use Open Graph tags to customize link previews.
|
<!-- You can use Open Graph tags to customize link previews.
|
||||||
Learn more: https://developers.facebook.com/docs/sharing/webmasters -->
|
Learn more: https://developers.facebook.com/docs/sharing/webmasters -->
|
||||||
<meta property="og:url" content="https://ofbbutte.com/api/share/s`+ sermon.id +`"/>
|
<meta property="og:url" content="`+ srmnUrl +`"/>
|
||||||
<meta property="og:type" content="website" />
|
<meta property="og:type" content="website" />
|
||||||
<meta property="og:title" content="` + sermon.title + `" />
|
<meta property="og:title" content="` + sermon.title + `" />
|
||||||
<meta property="og:description" content="` + sermon.description + `" />
|
<meta property="og:description" content="` + sermon.description + `" />
|
||||||
<meta property="og:image" content="https://ofbbutte.com/static/ofbmain/images/facebookplay.png" />
|
<meta property="og:image" content="` + imageUrl + `" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
</body>
|
</body>
|
||||||
|
|
@ -62,22 +77,24 @@ function getSermonMeta(res, id){
|
||||||
|
|
||||||
function getEvent(req, res, id){
|
function getEvent(req, res, id){
|
||||||
var userAgent = req.headers['user-agent'];
|
var userAgent = req.headers['user-agent'];
|
||||||
|
var userAgentOverride = req.headers['user-agent-override'];
|
||||||
|
userAgent = userAgentOverride || userAgent;
|
||||||
if (userAgent.startsWith('facebookexternalhit/1.1') ||
|
if (userAgent.startsWith('facebookexternalhit/1.1') ||
|
||||||
userAgent === 'Facebot' ||
|
userAgent === 'Facebot' ||
|
||||||
userAgent.startsWith('Twitterbot')) {
|
userAgent.startsWith('Twitterbot')) {
|
||||||
getEventMeta(res, id);
|
getEventMeta(req, res, id);
|
||||||
} else {
|
} else {
|
||||||
res.redirect("https://ofbbutte.com/events/" + id);
|
res.redirect("https://ofbbutte.com/events/" + id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getEventMeta(res, id){
|
function getEventMeta(req, res, id){
|
||||||
dbSermons.getEvent(id,function(error,event){
|
dbEvents.getEvent(id,function(error,event){
|
||||||
if (error){
|
if (error){
|
||||||
res.status(404).json({"status":404,"message":"Error processing request"});
|
res.status(404).json({"status":404,"message":"Error processing request"});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (sermon == null){
|
if (event == null){
|
||||||
res.status(404).json({"status":404,"message":"Event does not exist"});
|
res.status(404).json({"status":404,"message":"Event does not exist"});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -86,16 +103,20 @@ function getEventMeta(res, id){
|
||||||
var monthName = MONTHS_FULL[monthNum];
|
var monthName = MONTHS_FULL[monthNum];
|
||||||
var day = event.startDate.getDate();
|
var day = event.startDate.getDate();
|
||||||
|
|
||||||
|
var port = req.socket.localPort;
|
||||||
|
var imageUrl = req.protocol + "://" + req.hostname + ":" + port + calendarImageUrl + monthName + "/" + day;
|
||||||
|
var evntUrl = req.protocol + "://" + req.hostname + ":" + port + eventUrl + event.id;
|
||||||
|
|
||||||
var result = `<html>
|
var result = `<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Old Fashion Baptist Church</title>
|
<title>Old Fashion Baptist Church</title>
|
||||||
<!-- You can use Open Graph tags to customize link previews.
|
<!-- You can use Open Graph tags to customize link previews.
|
||||||
Learn more: https://developers.facebook.com/docs/sharing/webmasters -->
|
Learn more: https://developers.facebook.com/docs/sharing/webmasters -->
|
||||||
<meta property="og:url" content="https/share/e`+ event.id +`"/>
|
<meta property="og:url" content="`+ evntUrl +`"/>
|
||||||
<meta property="og:type" content="website" />
|
<meta property="og:type" content="website" />
|
||||||
<meta property="og:title" content="` + event.title + `" />
|
<meta property="og:title" content="` + event.title + `" />
|
||||||
<meta property="og:description" content="` + event.description + `" />
|
<meta property="og:description" content="` + event.description + `" />
|
||||||
<meta property="og:image" content="/cim/` + monthName + `/` + day + `"/>
|
<meta property="og:image" content="` + imageUrl + `"/>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue