mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-02-25 22:14:29 -05:00
Prototyped client response methods, refactored queue routes
This commit is contained in:
parent
4b0e384668
commit
ecf578ad3c
2 changed files with 43 additions and 14 deletions
|
@ -134,12 +134,12 @@ class SQSMessage extends MessageObject
|
||||||
|
|
||||||
getID: -> @originalMessage.Messages[0].MessageId
|
getID: -> @originalMessage.Messages[0].MessageId
|
||||||
|
|
||||||
removeFromQueue: (callback) -> parentQueue.deleteMessage @getReceiptHandle(), callback
|
removeFromQueue: (callback) -> @parentQueue.deleteMessage @getReceiptHandle(), callback
|
||||||
|
|
||||||
requeue: (callback) -> parentQueue.changeMessageVisibilityTimeout 0, @getReceiptHandle(), callback
|
requeue: (callback) -> @parentQueue.changeMessageVisibilityTimeout 0, @getReceiptHandle(), callback
|
||||||
|
|
||||||
changeMessageVisibilityTimeout: (secondsFromFunctionCall, callback) ->
|
changeMessageVisibilityTimeout: (secondsFromFunctionCall, callback) ->
|
||||||
parentQueue.changeMessageVisibilityTimeout secondsFromFunctionCall,@getReceiptHandle(), callback
|
@parentQueue.changeMessageVisibilityTimeout secondsFromFunctionCall,@getReceiptHandle(), callback
|
||||||
|
|
||||||
getReceiptHandle: -> @originalMessage.Messages[0].ReceiptHandle
|
getReceiptHandle: -> @originalMessage.Messages[0].ReceiptHandle
|
||||||
|
|
||||||
|
|
|
@ -44,22 +44,25 @@ parseTaskQueueMessage = (req, res, message) ->
|
||||||
try
|
try
|
||||||
return messageBody = JSON.parse message.getBody()
|
return messageBody = JSON.parse message.getBody()
|
||||||
catch e
|
catch e
|
||||||
sendResponseObject req, res, {"error":"There was an error parsing the task."}
|
sendResponseObject req, res, {"error":"There was an error parsing the task.Error: #{e}" }
|
||||||
null
|
null
|
||||||
|
|
||||||
|
|
||||||
constructTaskObject = (taskMessageBody, callback) ->
|
constructTaskObject = (taskMessageBody, callback) ->
|
||||||
getSessionInformation taskMessageBody.sessionID, (err, sessionInformation) ->
|
async.map taskMessageBody.sessions, getSessionInformation, (err, sessions) ->
|
||||||
return callback err, data if err?
|
return callback err, data if err?
|
||||||
|
|
||||||
taskObject =
|
taskObject =
|
||||||
"messageGenerated": Date.now()
|
"messageGenerated": Date.now()
|
||||||
"sessionID": sessionInformation.sessionID
|
"players": []
|
||||||
"sessionChangedTime": sessionInformation.changed
|
|
||||||
"taskGeneratingPlayerID": sessionInformation.creator
|
|
||||||
"code": sessionInformation.code
|
|
||||||
"players": sessionInformation.players
|
|
||||||
|
|
||||||
|
for session in sessions
|
||||||
|
sessionInformation =
|
||||||
|
"sessionID": session.sessionID
|
||||||
|
"sessionChangedTime": session.changed
|
||||||
|
"team": session.team? "No team"
|
||||||
|
"code": session.code
|
||||||
|
taskObject.players.push sessionInformation
|
||||||
callback err, taskObject
|
callback err, taskObject
|
||||||
|
|
||||||
|
|
||||||
|
@ -70,10 +73,11 @@ getSessionInformation = (sessionIDString, callback) ->
|
||||||
session = session.toJSON()
|
session = session.toJSON()
|
||||||
sessionInformation =
|
sessionInformation =
|
||||||
"sessionID": session._id
|
"sessionID": session._id
|
||||||
"players": _.cloneDeep session.players
|
|
||||||
"code": _.cloneDeep session.code
|
"code": _.cloneDeep session.code
|
||||||
"changed": session.changed
|
"changed": session.changed
|
||||||
"creator": session.creator
|
"creator": session.creator
|
||||||
|
"team": session.team
|
||||||
|
|
||||||
|
|
||||||
callback err, sessionInformation
|
callback err, sessionInformation
|
||||||
|
|
||||||
|
@ -84,17 +88,41 @@ sendResponseObject = (req,res,object) ->
|
||||||
res.end()
|
res.end()
|
||||||
|
|
||||||
module.exports.processTaskResult = (req, res) ->
|
module.exports.processTaskResult = (req, res) ->
|
||||||
#clientResponseObject = JSON.parse req.body
|
clientResponseObject = parseClientResponseObject req, res
|
||||||
#check for timeout
|
|
||||||
|
|
||||||
res.end("You posted an object to score!")
|
if clientResponseObject?
|
||||||
|
return handleTimedOutTask clientResponseObject if hasTaskTimedOut clientResponseObject
|
||||||
|
|
||||||
|
logTaskComputation clientResponseObject
|
||||||
|
updateScores clientResponseObject
|
||||||
|
|
||||||
|
|
||||||
|
hasTaskTimedOut = (taskBody) ->
|
||||||
|
return false
|
||||||
|
|
||||||
|
handleTimedOutTask = (taskBody) ->
|
||||||
|
#probably mark the task log as incomplete
|
||||||
|
return false
|
||||||
|
|
||||||
|
parseClientResponseObject = (req, res) ->
|
||||||
|
try
|
||||||
|
return JSON.parse req.body
|
||||||
|
catch e
|
||||||
|
errors.badInput res, "Unprocessable task response object."
|
||||||
|
return null
|
||||||
|
|
||||||
|
logTaskComputation = (taskObject) ->
|
||||||
|
return
|
||||||
|
|
||||||
|
updateScores = (taskObject) ->
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
###Sample Messages
|
###Sample Messages
|
||||||
sampleQueueMessage =
|
sampleQueueMessage =
|
||||||
sessions: [
|
sessions: [
|
||||||
"52dfeb17c8b5f435c7000025"
|
"52dfeb17c8b5f435c7000025"
|
||||||
|
"52dfe03ac8b5f435c7000009"
|
||||||
]
|
]
|
||||||
|
|
||||||
sampleUndoneTaskObject =
|
sampleUndoneTaskObject =
|
||||||
|
@ -138,6 +166,7 @@ sampleTaskLogObject=
|
||||||
"_id":ObjectId("507f191e810c19729de860ea") #datestamp is built into objectId
|
"_id":ObjectId("507f191e810c19729de860ea") #datestamp is built into objectId
|
||||||
"calculatedBy":ObjectId("51eb2714fa058cb20d0006ef")
|
"calculatedBy":ObjectId("51eb2714fa058cb20d0006ef")
|
||||||
"calculationTime":3201
|
"calculationTime":3201
|
||||||
|
timedOut: false
|
||||||
"sessions":[
|
"sessions":[
|
||||||
{
|
{
|
||||||
"ID":ObjectId("52dfeb17c8b5f435c7000025")
|
"ID":ObjectId("52dfeb17c8b5f435c7000025")
|
||||||
|
|
Loading…
Reference in a new issue