From d950002593d49fe0d7c4604375f523eb892e7274 Mon Sep 17 00:00:00 2001 From: Drasko DRASKOVIC Date: Thu, 28 Apr 2016 21:49:54 +0200 Subject: [PATCH] Refractored in Microservices Signed-off-by: Drasko DRASKOVIC --- Dockerfile | 37 -------- app/controllers/devices.js | 104 ----------------------- app/controllers/status.js | 12 --- app/database.js | 26 ------ app/logger.js | 4 - app/models/device.js | 146 -------------------------------- app/models/user.js | 73 ---------------- app/routes.js | 36 -------- app/routes/devices.js | 36 -------- app/routes/sessions.js | 51 ----------- app/routes/status.js | 15 ---- app/routes/users.js | 42 ---------- config.js | 51 ----------- config/config.js | 4 - config/development.json | 16 ---- config/production.json | 0 config/test.json | 0 gulpfile.js | 35 -------- httpServer.js | 72 ---------------- mainflux.js | 42 ---------- mqttServer.js | 37 -------- package.json | 37 -------- swagger.yaml | 167 ------------------------------------- test/apiTest.js | 40 --------- utils/generateToken.js | 9 -- wsServer.js | 25 ------ 26 files changed, 1117 deletions(-) delete mode 100644 Dockerfile delete mode 100644 app/controllers/devices.js delete mode 100644 app/controllers/status.js delete mode 100644 app/database.js delete mode 100644 app/logger.js delete mode 100644 app/models/device.js delete mode 100644 app/models/user.js delete mode 100644 app/routes.js delete mode 100644 app/routes/devices.js delete mode 100644 app/routes/sessions.js delete mode 100644 app/routes/status.js delete mode 100644 app/routes/users.js delete mode 100644 config.js delete mode 100644 config/config.js delete mode 100644 config/development.json delete mode 100644 config/production.json delete mode 100644 config/test.json delete mode 100644 gulpfile.js delete mode 100644 httpServer.js delete mode 100644 mainflux.js delete mode 100644 mqttServer.js delete mode 100644 package.json delete mode 100644 swagger.yaml delete mode 100644 test/apiTest.js delete mode 100644 utils/generateToken.js delete mode 100644 wsServer.js diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 2f5f163a..00000000 --- a/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -### -# Mainflux Dockerfile -### -# Set the base image to Node, onbuild variant: https://registry.hub.docker.com/_/node/ - -FROM node:4.2.3 -MAINTAINER Mainflux - -ENV MAINFLUX_PORT=7070 - -RUN apt-get update -qq && apt-get install -y build-essential - -RUN mkdir /mainflux - -### -# Installations -### -# Add Gulp globally - -RUN npm install -g gulp -RUN npm install -g nodemon - -# Finally, install all project Node modules -COPY . /mainflux -WORKDIR /mainflux -RUN npm install - -EXPOSE $MAINFLUX_PORT - -### -# Run main command from entrypoint and parameters in CMD[] -### - -CMD [""] - -# Set default container command -ENTRYPOINT gulp diff --git a/app/controllers/devices.js b/app/controllers/devices.js deleted file mode 100644 index 531cdc56..00000000 --- a/app/controllers/devices.js +++ /dev/null @@ -1,104 +0,0 @@ -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'); - -/** createDevice() */ -exports.createDevice = function(req, res, next) { - - console.log("req.headers['x-auth-token'] = ", req.headers['x-auth-token']); - console.log("req.headers['content-type'] = ", req.headers['content-type']); - - /** Save the device and check for errors */ - devicesDb.save(req.body, function(err, device) { - if (err) - return next(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() - }); - }); - - return next(); -} - -/** getAllDevices() */ -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) { - if (err) - return next(err); - - res.json(devices); - return next(); - }); -} - -/** getDevice() */ -exports.getDevice = function(req, res, next) { - - devicesDb.findOne({_id: mongojs.ObjectId(req.params.device_id)}, function(err, device) { - if (err) - return next(err); - - if (device) { - res.json(device); - } else { - res.send("NOT FOUND"); - } - return 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); - - res.send('OK'); - return next(); - }); -} - -/** deleteDevice() */ -exports.deleteDevice = function(req, res, next) { - - devicesDb.remove({ - _id: mongojs.ObjectId(req.params.device_id) - }, function(err, device) { - if (err) - return next(err); - - res.send('OK'); - return next(); - }); -} - diff --git a/app/controllers/status.js b/app/controllers/status.js deleted file mode 100644 index c8c2958c..00000000 --- a/app/controllers/status.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * STATUS - */ -exports.getStatus = function(req, res, next) { - - console.log("req.headers['x-auth-token'] = ", req.headers['x-auth-token']); - - var stat = {"status":"running"}; - res.send(stat); - - return next(); -} diff --git a/app/database.js b/app/database.js deleted file mode 100644 index 3ba0bb85..00000000 --- a/app/database.js +++ /dev/null @@ -1,26 +0,0 @@ -var config = require('../config'); - -/** - * MONGO DB - */ -var mongojs = require('mongojs'); - -/** Connect to DB */ -var collections = ['devices']; - -/** Check if we run with Docker compose */ -var dockerMongo = process.env.MONGODB_NAME; -var dbUrl = ''; -if (dockerMongo && dockerMongo == '/mainflux-api/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.host + ':' + config.db.port + '/' + config.db.name; -} - -var db = mongojs(dbUrl); - - -/** - * EXPORTS - */ -module.exports = db; diff --git a/app/logger.js b/app/logger.js deleted file mode 100644 index 10b73186..00000000 --- a/app/logger.js +++ /dev/null @@ -1,4 +0,0 @@ -var bunyan = require('bunyan'); -var log = bunyan.createLogger({name: "Mainflux"}); - -module.exports = log; diff --git a/app/models/device.js b/app/models/device.js deleted file mode 100644 index 9ecdc4c8..00000000 --- a/app/models/device.js +++ /dev/null @@ -1,146 +0,0 @@ -/** - * Dependencies - */ -var mongoose = require('mongoose'); - - -/** - * Private variables and functions - */ -var Schema = mongoose.Schema; - - -/** - * Exports - */ - -/** - * \b Device Schema - * - * @param name {String} Friendly name of the device - * @param description {String} Description of the device - * @param creator {String} Device creator - * @param owner {String} Owner of the device - * @param group {String} Device group that device belongs to - * @param deviceId {String} UUID of the device - * @param apiKey {String} Authentication token for accessing Mainflux API - * @param createdAt {Date} Timestamp of the device creation - * @param isPublic {Boolean} Is device publicly shared (not claimed yet) - * @param online {Boolean} Is device currently connected - * @param lastSeen {Date} When was the device last time connected - * @param updatedAt {Date} Timestamp of the last interaction between device and cloud - * @param manufacturerId {String} UUID of the manufacturing company - * @param serialNumber {String} Manufacturer marks devices by serial number - * @param productId {String} devices belong to some product (ex. HUE lights) - * @param activationCode {String} 3rd party apps might prefer codes for device claiming - * @param deviceLocation {String} Physical location of the device - * @param firmwareVersion {String} Needed for the OTA updates - */ -var DeviceSchema = new Schema({ - name: { - type: String, - required: false - }, - description: { - type: String, - required: false - }, - creator: { - type: String, - required: false, - }, - owner: { - type: String, - required: false, - }, - group: { - type: Array, - default: [] - }, - deviceId: { - type: String, - required: false, - index: true, - match: /^[0-9a-f]{10}$/ - }, - apiKey: { - type: String, - required: false, - index: true - }, - createdAt: { - type: Date, - index: true, - default: Date.now - }, - isPublic: { - type: Boolean, - index: true, - default: false - }, - online: { - type: Boolean, - index: true, - default: false - }, - lastSeen: { - type: Date - }, - updatedAt: { - type: Date - }, - manufacturerId: { - type: String, - required: false, - index: true, - match: /^[0-9a-f]{10}$/ - }, - serialNumber: { - type: String, - required: false, - index: true, - match: /^[0-9a-f]{10}$/ - }, - productId: { - type: String, - required: false, - index: true, - match: /^[0-9a-f]{10}$/ - }, - activationCode: { - type: String, - required: false, - index: true, - match: /^[0-9a-f]{10}$/ - }, - deviceLocation: { - type: String, - required: false, - index: true, - match: /^[0-9a-f]{10}$/ - }, - firmwareVersion: { - type: String, - required: false, - index: true, - match: /^[0-9a-f]{10}$/ - } - -}); - - -DeviceSchema.static('exists', function (apikey, deviceid, callback) { - this.where({ apiKey: apikey, deviceId: deviceid }).findOne(callback); -}); - -DeviceSchema.static('getDeviceByDeviceId', function (deviceid, callback) { - this.where({ deviceId: deviceid }).findOne(callback); -}); - -DeviceSchema.static('getDevicesByApikey', function (apikey, callback) { - this.where('apiKey', apikey).find(callback); -}); - - -module.exports = mongoose.model('Device', DeviceSchema); - diff --git a/app/models/user.js b/app/models/user.js deleted file mode 100644 index e4e4b8c4..00000000 --- a/app/models/user.js +++ /dev/null @@ -1,73 +0,0 @@ -// app/models/user.js - -var mongoose = require('mongoose'); -var Schema = mongoose.Schema; -var bcrypt = require('bcrypt'); -var _ = require('lodash'); - -var UserSchema = new Schema({ - firstName: { - type: String, - trim: true, - default: '', - }, - lastName: { - type: String, - trim: true, - default: '', - }, - displayName: { - type: String, - trim: true - }, - email: { - type: String, - trim: true, - unique: true, - }, - password: { - type: String, - default: '', - require: true - }, - created: { - type: Date, - default: Date.now - }, -}); - -/** - * Hook a pre save method to hash the user password - */ -UserSchema.pre('save', function(next) { - var user = this; - // only hash the password if it has been modified (or is new) - if (!user.isModified('password')) return next() - bcrypt.genSalt(10, function(err, salt) { - bcrypt.hash(user.password, salt, function(err, hash) { - if(err) return next(err); - // set the hashed password back on our user document - user.password = hash; - //user.save(); - next(); - }); - }); -}); - -// User methods - -/** - * Validate user password on singin and compare with hased password stored in DB - */ - - UserSchema.methods.validateUserPassword = function(plainPassword, cb) { - var user = this; - bcrypt.compare(plainPassword, user.password, function(err, isMatch) { - if (err) return cb(err); - cb(null, isMatch); - }); - }; - -// TODO: check if user with email already exist - -module.exports = mongoose.model('User', UserSchema); diff --git a/app/routes.js b/app/routes.js deleted file mode 100644 index 722e803a..00000000 --- a/app/routes.js +++ /dev/null @@ -1,36 +0,0 @@ -var restify = require('restify'); -var config = require('../config'); -var devicesController = require('./controllers/devices'); -var statusController = require('./controllers/status'); - -function routes(api) { - /** - * /STATUS - */ - api.get('/status', statusController.getStatus); - - - /** - * /DEVICES - */ - /** Create a device (accessed at POST http://localhost:8080/devices) */ - api.post('/devices', devicesController.createDevice); - - /** Get all the devices (accessed at GET http://localhost:8080/devices) */ - api.get('/devices', devicesController.getAllDevices); - - /** - * /devices/:device_id - * N.B. Colon (`:`) is needed because of Express `req.params`: http://expressjs.com/api.html#req.params - */ - /** Get the device with given id (accessed at GET http://localhost:8080/devices/:device_id) */ - api.get('/devices/:device_id', devicesController.getDevice) - - /** Update the device with given id (accessed at PUT http://localhost:8080/devices/:device_id) */ - api.put('/devices/:device_id', devicesController.updateDevice) - - /** Delete the device with given id (accessed at DELETE http://localhost:8080/devices/:device_id) */ - api.del('/devices/:device_id', devicesController.deleteDevice); -} - -module.exports = routes; diff --git a/app/routes/devices.js b/app/routes/devices.js deleted file mode 100644 index 4f02160e..00000000 --- a/app/routes/devices.js +++ /dev/null @@ -1,36 +0,0 @@ -var express = require('express'); -var router = express.Router(); // get an instance of the express Router - -var devices = require('../controllers/devices'); - -/** - * /devices - */ -router.route('/') - - /** Create a device (accessed at POST http://localhost:8080/devices) */ - .post(devices.createDevice) - - /** Get all the devices (accessed at GET http://localhost:8080/devices) */ - .get(devices.getAllDevices); - - -/** - * /devices/:device_id - * N.B. Colon (`:`) is needed because of Express `req.params`: http://expressjs.com/api.html#req.params - */ -router.route('/:device_id') - - /** Get the device with that id (accessed at GET http://localhost:8080/devices/:device_id) */ - .get(devices.getDevice) - - /** Update the device with this id (accessed at PUT http://localhost:8080/devices/:device_id) */ - .put(devices.updateDevice) - - /** Delete the device with this id (accessed at DELETE http://localhost:8080/devices/:device_id) */ - .delete(devices.deleteDevice); - -/** - * Export router module - */ -module.exports = router; diff --git a/app/routes/sessions.js b/app/routes/sessions.js deleted file mode 100644 index a58815f7..00000000 --- a/app/routes/sessions.js +++ /dev/null @@ -1,51 +0,0 @@ -var express = require('express'); -var router = express.Router(); // get an instance of the express Router -var _ = require('lodash'); -var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens - -var config = require('../../config/config'); -var User = require('../models/user'); - -// on routes that end in /things -// ---------------------------------------------------- -router.route('/') - - // Authenticate the user and return user token (accessed at POST http://localhost:8080/sessions) - .post(function(req, res) { - if(req.body.email && req.body.password) { - // Find the user - User.findOne({ - email: req.body.email - }, function(err, user) { - if (err) throw err; - if(!user){ - // User with this email does not exist - res.json({status:404, message: 'Authentication failed. User not found.' }); - } - // Validate user password - user.validateUserPassword(req.body.password,function (err, isMatch) { - if(err){ - res.json({status:401, message: 'Unauthorized.' }); - } - if(isMatch){ - // Generate user token - var token = jwt.sign(user, config.secretToken, { - expiresInMinutes: config.userTokenExpirePeriod - }); - res.json({status:200, token: token, message: 'Authentication succeeded.' }); - } else { - res.json({status:401, message: 'Unauthorized.' }); - } - }); - }) - } - else { - // Email or password are not provided - res.json({status:400, message: 'Bad request.' }); - } - - }); - -// export router module -module.exports = router; - diff --git a/app/routes/status.js b/app/routes/status.js deleted file mode 100644 index 40b8fda1..00000000 --- a/app/routes/status.js +++ /dev/null @@ -1,15 +0,0 @@ -var express = require('express'); -var router = express.Router(); // get an instance of the express Router - -// on routes that end in /things -// ---------------------------------------------------- -router.route('/') - - // get the status (accessed at GET http://localhost:8080/status) - .get(function(req, res) { - var stat = {"status":"running"} - res.send(stat); - }); - -// export router module -module.exports = router; diff --git a/app/routes/users.js b/app/routes/users.js deleted file mode 100644 index f06814a0..00000000 --- a/app/routes/users.js +++ /dev/null @@ -1,42 +0,0 @@ -var express = require('express'); -var router = express.Router(); // get an instance of the express Router -var _ = require('lodash'); -var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens - -var config = require('../../config/config'); -var User = require('../models/user'); - -// on routes that end in /things -// ---------------------------------------------------- -router.route('/') - - // create a new user account and return user token (accessed at POST http://localhost:8080/users) - .post(function(req, res) { - - if (!req.body.email || !req.body.password) { // Check for email and password in request - return res.json({status:400, message: 'Bad request.' }); - } - //TODO: Check if user with this email already exist - var user = new User({ - email: req.body.email, - password: req.body.password - }); - // save the user and generate token - user.save(function(err) { - if (err) - res.send(err); - // Create user token - var token = jwt.sign(user, config.secretToken, { - expiresInMinutes: config.userTokenExpirePeriod - }); - res.json({ - status: 200, - message: 'Account created!', - token: token - }); - }); - }); - -// export router module -module.exports = router; - diff --git a/config.js b/config.js deleted file mode 100644 index 18f8c572..00000000 --- a/config.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Copyright (c) Mainflux - * - * Mainflux server is licensed under an Apache license, version 2.0 license. - * All rights not explicitly granted in the Apache license, version 2.0 are reserved. - * See the included LICENSE file for more details. - */ -var mosca = require('mosca'); - -var config = {}; - -/** - * HTTP - */ -config.http = { - message : 'We are in development', - port : 7070, - version: 0.1 -} - -/** - * MongoDB - */ -config.db = { - host : 'localhost', - port : 27017, - name : 'test' -} - -/** - * Mosca - */ -var moscaBackend = { - type: 'redis', - redis: require('redis'), - db: 7, - port: 6379, - return_buffers: true, // to handle binary payloads - host: "localhost" -} - -config.mosca = { - port: 1883, - backend: moscaBackend, - persistence: { - factory: mosca.persistence.Redis - } -} - - -module.exports = config; diff --git a/config/config.js b/config/config.js deleted file mode 100644 index dedc05b4..00000000 --- a/config/config.js +++ /dev/null @@ -1,4 +0,0 @@ -/* - * Following recipe here: http://dailyjs.com/2014/01/02/recipe-for-express-configuration/ - */ -module.exports = require('./' + (process.env.NODE_ENV || 'development') + '.json'); diff --git a/config/development.json b/config/development.json deleted file mode 100644 index 4b8413c4..00000000 --- a/config/development.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "message" : "We are in development", - "db" : { - "addr" : "localhost", - "port" : "27017", - "name" : "test" - }, - "port" : "7070", - "tokenSecret": "Pariz-Beograd", - "userTokenExpirePeriod": "10080", - "limiter" : { - "defaultBurstRate": 50, - "defaultRatePerSec": 0.5 - }, - "version": "0.1" -} diff --git a/config/production.json b/config/production.json deleted file mode 100644 index e69de29b..00000000 diff --git a/config/test.json b/config/test.json deleted file mode 100644 index e69de29b..00000000 diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index 33ef5530..00000000 --- a/gulpfile.js +++ /dev/null @@ -1,35 +0,0 @@ -/* File: gulpfile.js */ - -// grab our packages -var gulp = require('gulp'); -var jshint = require('gulp-jshint'); -var nodemon = require('gulp-nodemon'); -var mocha = require('gulp-mocha'); -var exit = require('gulp-exit'); - -// define the default task and add the watch task to it -gulp.task('default', ['watch']); - -// configure the jshint task -gulp.task('lint', function() { - return gulp.src('app/**/*.js') - .pipe(jshint()) - .pipe(jshint.reporter('jshint-stylish')); -}); - -// configure which files to watch and what tasks to use on file changes -gulp.task('watch', function() { - gulp.watch('app/**/*.js', ['jshint']); - - // Start up the server and have it reload when anything in the - // ./build/ directory changes - nodemon({script: 'mainflux.js', watch: 'app/**'}); -}); - -gulp.task('test', function() { - return gulp - .src('test/*.js') - .pipe(mocha()) - .pipe(exit()); -}); - diff --git a/httpServer.js b/httpServer.js deleted file mode 100644 index 6f152a38..00000000 --- a/httpServer.js +++ /dev/null @@ -1,72 +0,0 @@ -/** - * Copyright (c) Mainflux - * - * Mainflux server is licensed under an Apache license, version 2.0 license. - * All rights not explicitly granted in the Apache license, version 2.0 are reserved. - * See the included LICENSE file for more details. - */ -var restify = require('restify'); -var domain = require('domain'); -var config = require('./config'); -var log = require('./app/logger'); - - -/** - * HTTP Restify - */ - -/** Create httpServer */ -var httpServer = restify.createServer({ - name: "Mainflux" -}); - - -httpServer.pre(restify.pre.sanitizePath()); -httpServer.use(restify.acceptParser(httpServer.acceptable)); -httpServer.use(restify.bodyParser()); -httpServer.use(restify.queryParser()); -httpServer.use(restify.authorizationParser()); -httpServer.use(restify.CORS()); -httpServer.use(restify.fullResponse()); - -/** Global error handler */ -httpServer.use(function(req, res, next) { - var domainHandler = domain.create(); - - domainHandler.on('error', function(err) { - var errMsg = 'Request: \n' + req + '\n'; - errMsg += 'Response: \n' + res + '\n'; - errMsg += 'Context: \n' + err; - errMsg += 'Trace: \n' + err.stack + '\n'; - - console.log(err.message); - - log.info(err); - }); - - domainHandler.enter(); - next(); -}); - - -/** - * ROUTES - */ -var route = require('./app/routes'); -route(httpServer); - - -/** - * SERVER START - */ -var port = process.env.PORT || config.http.port; - -httpServer.listen(port, function() { - console.log('HTTP magic happens on port ' + port); -}); - - -/** - * Exports - */ -module.exports = httpServer; diff --git a/mainflux.js b/mainflux.js deleted file mode 100644 index 8f2c1f05..00000000 --- a/mainflux.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright (c) Mainflux - * - * Mainflux server is licensed under an Apache license, version 2.0 license. - * All rights not explicitly granted in the Apache license, version 2.0 are reserved. - * See the included LICENSE file for more details. - */ -var domain = require('domain'); -var config = require('./config'); -var log = require('./app/logger'); - -var httpApi = require('./httpServer'); -var mqttApi = require('./mqttServer'); -var mqttApi = require('./wsServer'); - -var mainflux = {}; - - -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 -` - -console.log(banner); - -/** - * Exports - */ -module.exports = mainflux; diff --git a/mqttServer.js b/mqttServer.js deleted file mode 100644 index cccad9ba..00000000 --- a/mqttServer.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Copyright (c) Mainflux - * - * Mainflux server is licensed under an Apache license, version 2.0 license. - * All rights not explicitly granted in the Apache license, version 2.0 are reserved. - * See the included LICENSE file for more details. - */ -var config = require('./config'); - - -/*** - * MQTT Mosca - */ -var mosca = require('mosca'); - -var mqttServer = new mosca.Server(config.mosca); - -mqttServer.on('clientConnected', function(client) { - console.log('client connected', client.id); -}); - -/** Message received */ -mqttServer.on('published', function(packet, client) { - console.log('Published', packet.payload); -}); - -mqttServer.on('ready', setupMqtt); - -/** Mqtt server ready */ -function setupMqtt() { - console.log('MQTT magic happens on port 1883'); -} - -/** - * Exports - */ -module.exports = mqttServer; diff --git a/package.json b/package.json deleted file mode 100644 index 8f2fd1e0..00000000 --- a/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "node-api", - "description": "Mainflux is an open source MIT licensed IoT cloud written in NodeJS", - "main": "server.js", - "repository": { - "type": "git", - "url": "https://github.com/Mainflux/mainflux" - }, - "license": "Apache-2.0", - "scripts": { - "test": "node_modules/.bin/mocha" - }, - "dependencies": { - "bcrypt": "~0.8.5", - "body-parser": "~1.0.1", - "bunyan": "^1.5.1", - "jsonwebtoken": "~5.0.5", - "lodash": "~3.10.1", - "mongojs": "^1.4.1", - "mosca": "^1.2.0", - "nats": "^0.6.2", - "restify": "^4.0.3", - "ws": "^1.1.0" - }, - "devDependencies": { - "chai": "^3.4.0", - "gulp": "^3.9.0", - "gulp-exit": "0.0.2", - "gulp-jshint": "^1.11.2", - "gulp-mocha": "^2.1.3", - "gulp-nodemon": "^2.0.3", - "jshint-stylish": "^2.0.1", - "mocha": "^2.3.3", - "restify-jwt": "^0.4.0", - "supertest": "^1.1.0" - } -} diff --git a/swagger.yaml b/swagger.yaml deleted file mode 100644 index 69f9dd15..00000000 --- a/swagger.yaml +++ /dev/null @@ -1,167 +0,0 @@ -swagger: '2.0' -info: - version: 0.0.1 - title: Mainflux - termsOfService: 'http://mainflux.com/tos' - contact: - name: Mainflux - url: 'http://wwww.mainflux.com' - email: info@mainflux.com - license: - name: Apache-2.0 - url: 'http://opensource.org/licenses/Apache-2.0' -host: api.mainflux.com -basePath: / -schemes: - - http - - https -consumes: - - application/json - - text/xml -produces: - - application/json - - text/html -paths: - /status: - get: - description: | - Gets Mainflux server status. - tags: - - status - responses: - '200': - description: Server is running - schema: - title: Status - type: string - /devices: - get: - description: | - Gets all of the existing `Device` objects. - tags: - - devices - parameters: - - name: X-Auth-Token - in: header - description: authentification token - required: true - type: number - format: double - responses: - '200': - description: Successful response - schema: - title: ArrayOfDevices - type: array - items: - title: Device - type: object - properties: - uuid: - type: number - post: - description: | - Creates `Device` object. - Returns newly created Device object. - tags: - - devices - parameters: - - name: X-Auth-Token - in: header - description: authentification token - required: true - type: number - format: double - responses: - '200': - description: Successful response - schema: - title: Device - type: object - properties: - uuid: - type: number - '/devices/{device_id}': - get: - description: | - Gets `Device` object from the database by `deviceUuid`. - tags: - - devices - parameters: - - name: X-Auth-Token - in: header - description: authentification token - required: true - type: number - format: double - - name: device_id - in: path - description: Device UUID - required: true - type: string - responses: - '200': - description: Successful response - schema: - title: Thing - type: object - properties: - uuid: - type: number - put: - description: | - Updates Thing object from the database. - tags: - - devices - parameters: - - name: X-Auth-Token - in: header - description: authentification token - required: true - type: number - format: double - - name: device_id - in: path - description: Device UUID - required: true - type: string - - name: params - in: query - description: Device parameters - required: true - type: string - responses: - '200': - description: Successful response - schema: - title: Thing - type: object - properties: - uuid: - type: number - delete: - description: | - Deletes Thing object from the database. - tags: - - devices - parameters: - - name: X-Auth-Token - in: header - description: authentification token - required: true - type: number - format: double - - name: device_id - in: path - description: Device UUID - required: true - type: string - responses: - '200': - description: Successful response - schema: - title: Thing - type: object - properties: - uuid: - type: number diff --git a/test/apiTest.js b/test/apiTest.js deleted file mode 100644 index e97a1097..00000000 --- a/test/apiTest.js +++ /dev/null @@ -1,40 +0,0 @@ -/** Chai stuff */ -var should = require('chai').should; -var expect = require('chai').expect; - -/** Supertest for API */ -var supertest = require('supertest'); -var server = require('../server'); -var api = supertest(server); - -/** - * API test description - */ -describe('loading express', function () { - /** - * /status - */ - it('responds to /status', function testSlash(done) { - api - .get('/status') - .expect(200) - .end(function(err, res){ - expect(res.body.status).to.equal("running"); - done(); - }); - }); - - /** - * /foo/bar - */ - it('404 /foo/bar', function testPath(done) { - api - .get('/foo/bar') - .expect(404, done); - }); -}); - -after(function(done) { - server.close(done); -}); - diff --git a/utils/generateToken.js b/utils/generateToken.js deleted file mode 100644 index 61e3c3d6..00000000 --- a/utils/generateToken.js +++ /dev/null @@ -1,9 +0,0 @@ -var jwt = require('jsonwebtoken'); - -var config = require('../config/config'); - -var token = jwt.sign({foo: 'bar'}, config.tokenSecret, { - expiresInMinutes: config.userTokenExpirePeriod -}); - -console.log(token); diff --git a/wsServer.js b/wsServer.js deleted file mode 100644 index 2f0e1233..00000000 --- a/wsServer.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright (c) Mainflux - * - * Mainflux server is licensed under an Apache license, version 2.0 license. - * All rights not explicitly granted in the Apache license, version 2.0 are reserved. - * See the included LICENSE file for more details. - */ - -var WebSocketServer = require('ws').Server - , wsServer = new WebSocketServer({ port: 5152 }); - -wsServer.on('connection', function connection(ws) { - ws.on('message', function incoming(message) { - console.log('received: %s', message); - }); - - ws.send('something'); -}); - -console.log('WS magic happens on port 5152'); - -/** - * Exports - */ -module.exports = wsServer;