Skip to content

Instantly share code, notes, and snippets.

@epk
Created March 1, 2018 08:17
Show Gist options
  • Save epk/d20750da122f64f2aa2e080bad93b3b4 to your computer and use it in GitHub Desktop.
Save epk/d20750da122f64f2aa2e080bad93b3b4 to your computer and use it in GitHub Desktop.
var express = require('express');
//var logger = require('morgan');
var cookieParser = require('cookie-parser')
var app = express();
//Valid color Names
var CSS = ["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"];
//set up handlebars view engine
var handlebars = require('express-handlebars').create({
defaultLayout:'main',
helpers: {
debug: function(){
console.log("Current Context");
console.log("=================");
console.log(this);
return null
},
section: function(name, options){
if(!this._sections) this._sections = {};
this._sections[name] = options.fn(this);
return null;
}
}
});
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'handlebars');
//app.use(logger('dev'));
app.set('port', process.env.PORT || 3018);
app.use(cookieParser());
app.get('*', function(req, res){
// res.render('home');
var cookie = req.cookies;
if(cookie.bgcolor==undefined){
if(req.query.color!=undefined && CSS.includes(req.query.color.toLowerCase())){
res.cookie('bgcolor',req.query.color, { maxAge: 900000, httpOnly: true });
console.log("New Cookie Baked");
res.render('home',{color:req.query.color});
}
}
else {
if (req.query.color!=undefined && CSS.includes(req.query.color.toLowerCase())){
res.cookie('bgcolor',req.query.color, { maxAge: 900000, httpOnly: true });
console.log("re-baking cookie with newer color");
res.render('home',{color:req.query.color});
}
else{
console.log("using existing cookie for bg color");
res.render('home',{color:req.cookies.bgcolor});
}
}
});
//custom 404 page
app.use(function(req, res){
res.status(404);
res.render('404');
});
//custom 500 page
app.use(function(err, req, res, next){
res.status(500);
res.send(err.stack);
});
app.listen(app.get('port'), function(){
console.log('Express started on http://localhost:' + app.get('port') + '; press Ctrl-C to terminate.');
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment