var express = require('express'), knox = require('knox'), fs = require('fs'), app = express(), http = require('http'), server = http.createServer(app), io = require('socket.io').listen(server); var s3 = knox.createClient({ key: process.env.ASDF_S3_KEY, secret: process.env.ASDF_S3_SECRET, bucket: 'dump2' }); app.configure(function(){ app.use(express.logger()); app.use(express.methodOverride()); app.use(express.bodyParser()); app.use(express.static(__dirname + '/public')); }); /******************************* ROUTES */ app.get('/latest', function(req, res){ var data = { 'image_url': Images.latest() }; res.setHeader('Content-Type', 'application/json'); res.send(JSON.stringify(data)); }); app.post('/upload', function(req, res) { var user = req.body.socketid; var image = req.files.image; var filename = "/test/" + timestamp() + "-" + image.name var s3req = s3.putFile(image.path, filename, { 'Content-Length': image.size, 'Content-Type': image.type, 'x-amz-acl': 'public-read' }, function(err, s3res){ if (200 == s3res.statusCode) { ImageURL = s3res.client._httpMessage.url; // janked Images.push( ImageURL ); console.log('saved to %s', ImageURL); var data = { 'status': 'ok' }; res.setHeader('Content-Type', 'application/json'); res.send(JSON.stringify(data)); } }); }); /******************************* WEBSOCKETS */ var State = { WAITING: 0, DRAWING: 1, VOTING: 2, WIN: 3, RESET: -1, } function Channel() { this.state = State.WAITING; this.messages = []; this.players = {}; this.message_id = 0; } Channel.prototype.push = function(message){ if (this.messages.length > 20) this.messages.shift(); var message = { id: ++this.message_id, content: message, user: username, faves: 0, time: Date.now() }; this.messages.push(message); io.sockets.emit('message', JSON.stringify(message)); } Channel.prototype.fave = function(id){ for (var i = 0; i < messages.length; i++) { if (messages[i].id == id) { messages[i].faves++; } } } Channel.prototype.join = function(){ return { state: this.state, messages: this.messages, players: this.players } } var game = new Channel (); io.sockets.on( 'connection', function(socket){ socket.emit( 'join', game.join() ); }); /******************************* DONE */ var port = process.env.PORT || 5000; server.listen(port); console.log('Listening on port ' + port);