2014-02-06 13:25:11 -08:00
log = require ' winston '
errors = require ' ../commons/errors '
scoringQueue = require ' ../queues/scoring '
module.exports.setup = (app) ->
scoringQueue . setup ( )
2014-02-24 07:50:43 -08:00
#app.post '/queue/scoring/pairwise', (req, res) ->
# handler = loadQueueHandler 'scoring'
# handler.addPairwiseTaskToQueue req, res
2014-03-15 09:20:13 -07:00
app . get ' /queue/messagesInQueueCount ' , (req, res) ->
handler = loadQueueHandler ' scoring '
handler . messagesInQueueCount req , res
2014-02-24 07:50:43 -08:00
2014-02-06 13:25:11 -08:00
app . all ' /queue/* ' , (req, res) ->
setResponseHeaderToJSONContentType res
2014-02-24 07:50:43 -08:00
2014-02-06 13:25:11 -08:00
queueName = getQueueNameFromPath req . path
try
handler = loadQueueHandler queueName
if isHTTPMethodGet req
handler . dispatchTaskToConsumer req , res
2014-02-10 13:18:39 -08:00
else if isHTTPMethodPut req
2014-02-06 13:25:11 -08:00
handler . processTaskResult req , res
2014-02-10 13:18:39 -08:00
else if isHTTPMethodPost req
handler . createNewTask req , res #TODO: do not use this in production
2014-02-06 13:25:11 -08:00
else
sendMethodNotSupportedError req , res
catch error
2014-02-06 14:32:35 -08:00
log . error error
2014-02-10 13:18:39 -08:00
sendQueueError req , res , error
2014-02-24 07:50:43 -08:00
2014-02-06 13:25:11 -08:00
setResponseHeaderToJSONContentType = (res) -> res . setHeader ( ' Content-Type ' , ' application/json ' )
getQueueNameFromPath = (path) ->
pathPrefix = ' /queue/ '
pathAfterPrefix = path [ pathPrefix . length . . ]
partsOfURL = pathAfterPrefix . split ' / '
queueName = partsOfURL [ 0 ]
queueName
loadQueueHandler = (queueName) -> require ( ' ../queues/ ' + queueName )
isHTTPMethodGet = (req) -> return req . route . method is ' get '
isHTTPMethodPost = (req) -> return req . route . method is ' post '
2014-02-10 13:18:39 -08:00
isHTTPMethodPut = (req) -> return req . route . method is ' put '
2014-02-06 13:25:11 -08:00
sendMethodNotSupportedError = (req, res) -> errors . badMethod ( res , " Queues do not support the HTTP method used. " )
2014-02-10 13:18:39 -08:00
sendQueueError = (req,res, error) -> errors . serverError ( res , " Route #{ req . path } had a problem: #{ error } " )
2014-02-06 13:25:11 -08:00