octoblu/meshblu-server-http

View on GitHub
src/controllers/authenticate-controller.coffee

Summary

Maintainability
Test Coverage
MeshbluAuthParser = require '../helpers/meshblu-auth-parser'
debug = require('debug')('meshblu-core-protocol-adapter-http:authenticate-controller')
_     = require 'lodash'

class AuthenticateController
  constructor: ({@jobManager,@jobToHttp}) ->
    @authParser = new MeshbluAuthParser

  check: (req, res) =>
    job = @jobToHttp.httpToJob jobType: 'Authenticate', request: req, toUuid: req.params.uuid

    @jobManager.do job, (error, jobResponse) =>
      return res.sendError error if error?
      @jobToHttp.sendJobResponse {jobResponse, res}

  checkDevice: (req, res) =>
    {uuid} = req.params
    {token} = req.query
    job = @jobToHttp.httpToJob jobType: 'Authenticate', request: req
    job.metadata.auth = {uuid, token}
    @jobManager.do job, (error, jobResponse) =>
      return res.sendError error if error?
      {code} = jobResponse.metadata
      return res.status(code).send JSON.parse jobResponse.rawData unless code == 204
      res.status(200).send(uuid: uuid, authentication: true)

module.exports = AuthenticateController