-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
122 lines (96 loc) · 2.75 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/**
* Module dependencies. - testing startScreen branch
*/
var express = require('express')
, stylus = require('stylus')
, nib = require('nib')
, routes = require('./routes')
, util = require('util')
;
var app = module.exports = express.createServer();
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(stylus.middleware({
src: __dirname + '/public',
compile: compile
}));
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
function compile(str, path) {
return stylus(str)
.set('filename', path)
.set('compress', true)
.use(nib());
}
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// io events to recieve and send
var io = require('socket.io').listen(app);
io.sockets.on('connection', function(socket) {
// listens to see if new game with a tag has started and sends
// tag update to browser to update Popular recent tags
socket.on('startedGame', function(data){
socket.broadcast.emit('tagUpdate', data.gameTag);
});
});
// mongodb url
var dburl = process.env['MONGOLAB_URI'] != null ? process.env['MONGOLAB_URI'] : 'mongodb://localhost:27017/memorygame';
var dbconfig = require('./dbconfig.js').dbconfig(dburl);
// create memoryGame
var MemoryGame = require('./MemoryGame.js').MemoryGame;
var memoryGame = new MemoryGame(dbconfig);
// Routes
app.get('/', function(req,res) {
memoryGame.getPopularTags(function(error, tags){
if(error) callback(error);
else{
res.render('index.jade', {
locals: {
tags: tags
}
});
}
});
});
app.post('/start', function(req,res) {
var gameConfig = {
'matches': 8
, 'tag': req.param('tag')
};
//create a new game of in the database
memoryGame.newGame(gameConfig, function(error, game){
//load photos from instagram
memoryGame.getPhotos(function(error, photos){
//add game and photos to db
memoryGame.setupGame({'games':game, 'photos':photos}, function(error, game) {
//get dealt cards for the game and display them
memoryGame.dealGame(game, function(error, cards) {
if(error) callback(error)
else {
res.send(cards);
}
});
});
});
});
});
app.get('/flip/:game_id/:card_id', function(req, res) {
memoryGame.flipCard(req.params.game_id, req.params.card_id, function(error, pic) {
if(error) callback(error)
else {
res.send(pic);
}
});
});
var port = process.env.PORT || 3000;
app.listen(port);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);