diff --git a/app/controllers/devices.js b/app/controllers/devices.js index 531cdc56..0b745a85 100644 --- a/app/controllers/devices.js +++ b/app/controllers/devices.js @@ -1,11 +1,8 @@ -var mongojs = require('mongojs'); -var devicesDb = require('../database').collection('devices'); - -var jwt = require('jsonwebtoken'); var config = require('../../config/config'); var log = require('../logger'); -var os = require('os'); +var Device = require('../models/device'); + /** createDevice() */ exports.createDevice = function(req, res, next) { @@ -14,29 +11,17 @@ exports.createDevice = function(req, res, next) { console.log("req.headers['content-type'] = ", req.headers['content-type']); /** Save the device and check for errors */ - devicesDb.save(req.body, function(err, device) { + var device = new Device(); // create a new instance of the Device model + device.name = req.body.name; // set the device's name (comes from the request) + + /** Save the device and check for errors */ + device.save(function(err) { if (err) - return next(err); + res.send(err); - var signaturePayload = { - version: config.version - } - - var token = jwt.sign(signaturePayload, config.tokenSecret, { - subject: 'Device Auth Token', - issuer: req.headers.host, - audience: device._id.toString() - }); - - res.json({ - status: 200, - message: 'Device created', - token: token, - _id: device._id.toString() - }); + res.json(device); + return next(); }); - - return next(); } /** getAllDevices() */ @@ -44,11 +29,9 @@ exports.getAllDevices = function(req, res, next) { console.log("req.headers['x-auth-token'] = ", req.headers['x-auth-token']); - log.info('hi'); - - devicesDb.find(req.body, function(err, devices) { + Device.find(function(err, devices) { if (err) - return next(err); + res.send(err); res.json(devices); return next(); @@ -58,15 +41,11 @@ exports.getAllDevices = function(req, res, next) { /** getDevice() */ exports.getDevice = function(req, res, next) { - devicesDb.findOne({_id: mongojs.ObjectId(req.params.device_id)}, function(err, device) { + Device.findById(req.params.device_id, function(err, device) { if (err) - return next(err); + res.send(err); - if (device) { - res.json(device); - } else { - res.send("NOT FOUND"); - } + res.json(device); return next(); }); } @@ -74,31 +53,34 @@ exports.getDevice = function(req, res, next) { /** updateDevice() */ exports.updateDevice = function(req, res, next) { /** Use our device model to find the device we want */ - console.log(req.body); - devicesDb.update({ - _id: mongojs.ObjectId(req.params.device_id) - }, - {$set: req.body}, - function(err, device) { - if (err) - return next(err); + Device.findById(req.params.device_id, function(err, device) { + if (err) + res.send(err); - res.send('OK'); + device.name = req.body.name; // update the devices info + + /** Save the device */ + device.save(function(err) { + if (err) + res.send(err); + + res.json(device); return next(); + }); + }); } /** deleteDevice() */ exports.deleteDevice = function(req, res, next) { + Device.remove({ + _id: req.params.device_id + }, function(err, device) { + if (err) + res.send(err); - devicesDb.remove({ - _id: mongojs.ObjectId(req.params.device_id) - }, function(err, device) { - if (err) - return next(err); - - res.send('OK'); - return next(); - }); + res.json(device); + return next(); + }); } diff --git a/package.json b/package.json index ae313e07..0228d46e 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "bunyan": "^1.5.1", "jsonwebtoken": "~5.0.5", "lodash": "~3.10.1", - "mongojs": "^1.4.1", + "mongoose": "^4.4.12", "restify": "^4.0.3" }, "devDependencies": { diff --git a/server.js b/server.js index 75b4b009..1260d5a9 100644 --- a/server.js +++ b/server.js @@ -6,11 +6,28 @@ * See the included LICENSE file for more details. */ var restify = require('restify'); -var jwt = require('restify-jwt'); var domain = require('domain'); var config = require('./config/config'); var log = require('./app/logger'); +// MongoDB +var mongoose = require('mongoose'); + +/** + * Connect to DB + */ +/** Check if we run with Docker compose */ +var dockerMongo = process.env.MONGODB_NAME; +var dbUrl = ''; +if (dockerMongo && dockerMongo == '/mainflux-api-docker/mongodb') { + dbUrl = 'mongodb://' + process.env.MONGODB_PORT_27017_TCP_ADDR + ':' + process.env.MONGODB_PORT_27017_TCP_PORT + '/' + config.db.name; +} else { + dbUrl = 'mongodb://' + config.db.addr + ':' + config.db.port + '/' + config.db.name; +} + +mongoose.connect(dbUrl, {server:{auto_reconnect:true}}); + + /** * RESTIFY */ @@ -20,34 +37,15 @@ var server = restify.createServer({ name: "Mainflux" }); + server.pre(restify.pre.sanitizePath()); server.use(restify.acceptParser(server.acceptable)); server.use(restify.bodyParser()); server.use(restify.queryParser()); server.use(restify.authorizationParser()); - -console.log('Enabling CORS'); server.use(restify.CORS()); server.use(restify.fullResponse()); -/** JWT */ -server.use(jwt({ - secret: config.tokenSecret, - requestProperty: 'token', - getToken: function fromHeaderOrQuerystring(req) { - var token = (req.body && req.body.access_token) || - (req.query && req.query.access_token) || - req.headers['x-auth-token']; - - return token; - } -}).unless({ - path: [ - '/status', - {url: '/devices', methods: ['POST']} - ] -})); - /** Global error handler */ server.use(function(req, res, next) { var domainHandler = domain.create(); @@ -80,9 +78,26 @@ route(server); */ var port = process.env.PORT || config.port; -console.log('Starting the server'); +var banner = ` +oocccdMMMMMMMMMWOkkkkoooolcclX +llc:::0MMMMMMMM0xxxxxdlllc:::d +lll:::cXMMMMMMXxxxxxxxdlllc::: +lllc:::cXMMMMNkxxxdxxxxolllc:: +olllc:::oWMMNkxxxdloxxxxolllc: ## ## ### #### ## ## ######## ## ## ## ## ## +xolllc:::xWWOxxxdllloxxxxolllc ### ### ## ## ## ### ## ## ## ## ## ## ## +xxolllc:::x0xxxdllll:oxxxxllll #### #### ## ## ## #### ## ## ## ## ## ## ## +xxxolllc::oxxxxllll:::dxxxdlll ## ### ## ## ## ## ## ## ## ###### ## ## ## ### +xxxdllll:lxxxxolllc:::Okxxxdll ## ## ######### ## ## #### ## ## ## ## ## ## +0xxxdllloxxxxolllc:::OMNkxxxdl ## ## ## ## ## ## ### ## ## ## ## ## ## +W0xxxdllxxxxolllc:::xMMMXxxxxd ## ## ## ## #### ## ## ## ######## ####### ## ## +MWOxxxdxxxxdlllc:::oWMMMMKxxxx +MMWkxxxxxxdlllc:::oNMMMMMM0xxx +MMMXxxxxxdllllc::cXMMMMMMMWOxx +MMMM0xxxxolllc:::kMMMMMMMMMXxx +` server.listen(port, function() { - console.log('%s is running at %s', server.name, server.url); + console.log(banner); + console.log('Magic happens on port ' + port); });