From 5c328d09f5313896a6b6d4ca0b78126280bfc6a5 Mon Sep 17 00:00:00 2001 From: Michael Schmatz Date: Wed, 5 Feb 2014 09:39:14 -0800 Subject: [PATCH] Added scoring and queue modules --- app/lib/Router.coffee | 3 --- server/{ => commons}/queue.coffee | 6 ++--- server/multiplayer.coffee | 27 ------------------- server/queue.spec.coffee | 45 ------------------------------- server/routes/scoring.coffee | 41 ++++++++++++++++++++++++++++ server/sendwithus.coffee | 2 +- server_setup.coffee | 2 ++ 7 files changed, 47 insertions(+), 79 deletions(-) rename server/{ => commons}/queue.coffee (98%) delete mode 100644 server/multiplayer.coffee delete mode 100644 server/queue.spec.coffee diff --git a/app/lib/Router.coffee b/app/lib/Router.coffee index d20963cd7..613122fe5 100644 --- a/app/lib/Router.coffee +++ b/app/lib/Router.coffee @@ -20,9 +20,6 @@ module.exports = class CocoRouter extends Backbone.Router 'db/*path': 'routeToServer' 'file/*path': 'routeToServer' - - #multiplayer routes - 'scoring/queue': 'routeToServer' 'play/level/:levelID/leaderboard/:teamID/:startRank/:endRank': 'getPaginatedLevelRank' 'play/level/:levelID/player/:playerID': 'getPlayerLevelInfo' diff --git a/server/queue.coffee b/server/commons/queue.coffee similarity index 98% rename from server/queue.coffee rename to server/commons/queue.coffee index 629aef754..1e53675eb 100644 --- a/server/queue.coffee +++ b/server/commons/queue.coffee @@ -1,10 +1,10 @@ -config = require '../server_config' +config = require '../../server_config' winston = require 'winston' mongoose = require 'mongoose' async = require 'async' -errors = require './commons/errors' +errors = require './errors' aws = require 'aws-sdk' -db = require './routes/db' +db = require './../routes/db' mongoose = require 'mongoose' events = require 'events' diff --git a/server/multiplayer.coffee b/server/multiplayer.coffee deleted file mode 100644 index 5ffe39bf5..000000000 --- a/server/multiplayer.coffee +++ /dev/null @@ -1,27 +0,0 @@ -config = require '../server_config' -winston = require 'winston' -mongoose = require 'mongoose' -async = require 'async' -errors = require './commons/errors' -aws = require 'aws-sdk' -db = require './routes/db' -mongoose = require 'mongoose' -events = require 'events' -queues = require 'queue' - -module.exports.connectToScoringQueue = -> queues.initializeScoringTaskQueue() unless queues.scoringTaskQueue? - -module.exports.setupRoutes = (app) -> - return - - -module.exports.setupRoutes = (app) -> - app.all '/multiplayer/*', (req, res) -> - unless scoringTaskQueue? - - errors.custom res, 503, "Currently initializing scoring queue" - - return - - - diff --git a/server/queue.spec.coffee b/server/queue.spec.coffee deleted file mode 100644 index 052fb3c79..000000000 --- a/server/queue.spec.coffee +++ /dev/null @@ -1,45 +0,0 @@ -queues = require './queue' -config = require '../server_config.js' -winston = require 'winston' -describe 'Queue', -> - describe 'construction interface', -> - it 'should construct a MongoQueueClient if not in production', -> - config.isProduction = false - queue = queues.generateQueueClient() - expect(queue.constructor.name).toEqual 'MongoQueueClient' - it 'should construct an SQSQueueClient if in production', -> - config.isProduction = true - queue = queues.generateQueueClient() - expect(queue.constructor.name).toEqual 'SQSQueueClient' - describe 'registerQueue', -> - mongoQueueClient = null - sqsQueueClient = null - beforeEach -> - config.isProduction = false - mongoQueueClient = queues.generateQueueClient() - - it 'should generate the correct type of queue', (done) -> - mongoQueueClient.registerQueue "TestQueue", {}, (err, data) -> - expect(data.constructor.name).toEqual 'MongoQueue' - done() - - describe 'messages', -> - mongoQueueClient = queues.generateQueueClient() - testQueue = null - - messageIdToDelete = null - it 'should send a message', (done) -> - mongoQueueClient.registerQueue "TestQueue", {}, (err, data) -> - testQueue = data - testQueue.sendMessage {"Body":"This is a test message"} ,0, (err2, data2) -> - done() - it 'should receieve a message', (done) -> - testQueue.receieveMessage (err,data) -> - winston.info "Data body is #{data.Body}" - expect(data.Body).toBe "This is a test message" - messageIdToDelete = data._id - done() - it 'should delete a message', (done) -> - expect(true).toBeTruthy() - done() - diff --git a/server/routes/scoring.coffee b/server/routes/scoring.coffee index e69de29bb..da5279eec 100644 --- a/server/routes/scoring.coffee +++ b/server/routes/scoring.coffee @@ -0,0 +1,41 @@ +config = require '../../server_config' +winston = require 'winston' +mongoose = require 'mongoose' +async = require 'async' +errors = require '../commons/errors' +aws = require 'aws-sdk' +db = require './db' +mongoose = require 'mongoose' +events = require 'events' +queues = require '../commons/queue' + +module.exports.connectToScoringQueue = -> queues.initializeScoringTaskQueue() unless queues.scoringTaskQueue? + +module.exports.setupRoutes = (app) -> + app.get '/scoring/queue', (req,res) -> + #must also include the + queues.scoringTaskQueue.receieveMessage (err, data) -> + #once the data is recieved + + + levelAndUserCodeMapResponse = {} + sendResponseObject req,res,levelAndUserCodeMapResponse + + app.post '/scoring/queue', (req, res) -> + clientResponseObject = req.body + + res.end("You posted an object to score!") + + + + +sendResponseObject = (req,res,object) -> + res.setHeader('Content-Type', 'application/json') + res.send(object) + res.end() + + +constructTaskObject = (data, callback) -> + #task includes session ID, + + diff --git a/server/sendwithus.coffee b/server/sendwithus.coffee index 39d1839bb..02ea4576d 100644 --- a/server/sendwithus.coffee +++ b/server/sendwithus.coffee @@ -1,7 +1,7 @@ config = require '../server_config' sendwithusAPI = require 'sendwithus' swuAPIKey = config.mail.sendwithusAPIKey -queues = require './queue' +queues = require './commons/queue' module.exports.setupQueue = -> queues.initializeSendwithusQueue() unless queues.sendwithusQueue? diff --git a/server_setup.coffee b/server_setup.coffee index 7a6397b2a..84cb59ef4 100644 --- a/server_setup.coffee +++ b/server_setup.coffee @@ -14,6 +14,7 @@ sprites = require './server/routes/sprites' contact = require './server/routes/contact' languages = require './server/routes/languages' mail = require './server/routes/mail' +scoring = require './server/routes/scoring' config = require './server_config' @@ -94,6 +95,7 @@ exports.setupRoutes = (app) -> folder.setupRoutes app languages.setupRoutes app mail.setupRoutes app + scoring.setupRoutes app setupFacebookCrossDomainCommunicationRoute app setupFallbackRouteToIndex app