1 | FriendlySharefile = require 'friendly-sharefile'
|
2 | debug = require('debug')('friendly-sharefile-worker:queue-worker')
|
3 |
|
4 | class QueueWorker
|
5 | constructor: ({@jobManager,@meshbluConfig}) ->
|
6 | run: (callback) =>
|
7 | @jobManager.getRequest ['request'], (error, result) =>
|
8 | return callback error if error?
|
9 | return callback() unless result?
|
10 |
|
11 | {token,domain,jobType,options,responseId} = result.metadata
|
12 | data = JSON.parse result.rawData
|
13 | options.data = data
|
14 |
|
15 | friendlySharefile = new FriendlySharefile {@meshbluConfig,token,domain}
|
16 | func = friendlySharefile[jobType]
|
17 | unless func?
|
18 | error = new Error "jobType not found: #{jobType}"
|
19 | console.error error.stack
|
20 | return @respondWithError error, responseId, callback
|
21 | func options, (error, sharefileResult) =>
|
22 | return @respondWithError error, responseId, callback if error?
|
23 | @respondWithSuccess sharefileResult, responseId, callback
|
24 |
|
25 | respondWithError: (error, responseId, callback) =>
|
26 | response =
|
27 | metadata:
|
28 | responseId:responseId
|
29 | code: error.code
|
30 | data: error.message
|
31 | debug 'responding with error', response
|
32 | @jobManager.createResponse 'response', response, callback
|
33 |
|
34 | respondWithSuccess: (result, responseId, callback) =>
|
35 | response =
|
36 | metadata:
|
37 | responseId: responseId
|
38 | code: result.code
|
39 | data: result.body
|
40 | debug 'responding with success', response
|
41 | @jobManager.createResponse 'response', response, callback
|
42 |
|
43 | module.exports = QueueWorker
|