octoblu/meshblu-core-task-check-discover-whitelist

View on GitHub
src/check-whitelist.coffee

Summary

Maintainability
Test Coverage
WhitelistManager = require 'meshblu-core-manager-whitelist'
http             = require 'http'

class CheckWhitelist
  constructor: ({datastore, @whitelistManager, uuidAliasResolver}) ->
    @whitelistManager ?= new WhitelistManager {datastore, uuidAliasResolver}

  do: (job, callback) =>
    {toUuid, fromUuid, responseId, auth} = job.metadata
    fromUuid ?= auth.uuid
    @whitelistManager.canDiscover {fromUuid, toUuid}, (error, verified) =>
      return @sendResponse responseId, 500, callback if error?
      return @sendResponse responseId, 403, callback unless verified
      @sendResponse responseId, 204, callback

  sendResponse: (responseId, code, callback) =>
    callback null,
      metadata:
        responseId: responseId
        code: code
        status: http.STATUS_CODES[code]

module.exports = CheckWhitelist