UNPKG

1.33 kBtext/coffeescriptView Raw
1_ = require 'lodash'
2MeshbluAuthParser = require '../helpers/meshblu-auth-parser'
3
4class JobToHttp
5 constructor: () ->
6 @authParser = new MeshbluAuthParser
7
8 httpToJob: ({jobType, request, toUuid, data}) ->
9 data ?= request.body
10 userMetadata = @getMetadataFromHeaders request.headers
11
12 auth = @authParser.parse request
13 systemMetadata =
14 auth: auth
15 fromUuid: request.get('x-meshblu-as') ? auth.uuid
16 toUuid: toUuid
17 jobType: jobType
18
19 job =
20 metadata: _.extend userMetadata, systemMetadata
21 data: data
22
23 job
24
25 getMetadataFromHeaders: (headers) =>
26 _.transform headers, (newMetadata, value, header) =>
27 return unless _.startsWith header, 'x-meshblu-'
28 key = _.camelCase( _.replace(header, "x-meshblu-", '' ))
29 newMetadata[key] = value
30
31 metadataToHeaders: (metadata) =>
32 headers = {}
33 _.each metadata, (value, key) =>
34 header = "x-meshblu-#{_.kebabCase(key)}"
35 _.set headers, header, value
36 headers
37
38 sendJobResponse: ({jobResponse, res}) ->
39 return res.sendStatus(500) unless jobResponse?
40 res.set @metadataToHeaders(jobResponse.metadata)
41
42 return res.sendStatus jobResponse.metadata.code unless jobResponse.rawData?
43
44 res.status(jobResponse.metadata.code).send JSON.parse(jobResponse.rawData)
45
46 module.exports = JobToHttp