1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-05-02 22:17:10 +08:00

Merge pull request #33 from drasko/master

Correct Swagger file
This commit is contained in:
Drasko DRASKOVIC 2015-12-04 01:16:44 +01:00
commit 980f6ac525
5 changed files with 178 additions and 296 deletions

View File

@ -1,6 +1,9 @@
var mongojs = require('mongojs');
var devicesDb = require('../database').collection('devices');
var jwt = require('jsonwebtoken');
var config = require('../../config/config');
/** createDevice() */
exports.createDevice = function(req, res, next) {
@ -9,9 +12,17 @@ exports.createDevice = function(req, res, next) {
/** Save the device and check for errors */
devicesDb.insert(req.body, function(err, device) {
if (err)
res.send(err);
return next(err);
res.json(device);
var token = jwt.sign(device, config.tokenSecret, {
expiresInMinutes: config.userTokenExpirePeriod
});
res.json({
status: 200,
message: 'Device created',
token: token
});
});
return next();
@ -24,7 +35,7 @@ exports.getAllDevices = function(req, res, next) {
devicesDb.find(req.body, function(err, devices) {
if (err)
res.send(err);
return next(err);
res.json(devices);
return next();
@ -63,7 +74,7 @@ exports.updateDevice = function(req, res, next) {
/** deleteDevice() */
exports.deleteDevice = function(req, res, next) {
deviceDb.remove({
devicesDb.remove({
_id: mongojs.ObjectId(req.params.device_id)
}, function(err, device) {
if (err)

View File

@ -6,7 +6,7 @@
"name" : "test"
},
"port" : "8080",
"secretToken": "VelikaSrbija",
"tokenSecret": "Pariz-Beograd",
"userTokenExpirePeriod": "10080",
"limiter" : {
"defaultBurstRate": 50,

View File

@ -27,6 +27,7 @@
"gulp-nodemon": "^2.0.3",
"jshint-stylish": "^2.0.1",
"mocha": "^2.3.3",
"restify-jwt": "^0.4.0",
"supertest": "^1.1.0"
}
}

View File

@ -6,6 +6,7 @@
* 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');
@ -29,7 +30,25 @@ console.log('Enabling CORS');
server.use(restify.CORS());
server.use(restify.fullResponse());
//Global error handler
/** 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();

View File

@ -1,293 +1,144 @@
swagger: '2.0'
# Document metadata
info:
version: "0.0.1"
title: Mainflux
termsOfService: http://swagger.io/terms/
contact:
name: API Support
url: http://wwww.mainflux.com/support
email: support@mainflux.com
license:
name: MIT
url: http://opensource.org/licenses/MIT
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'
paths:
/status:
# This is a HTTP operation
get:
# Describe this verb here. Note: you can use markdown
description: |
Gets Mainflux server status.
# Expected responses for this operation:
responses:
# Response code
200:
description: Server is running
# A schema describing your response object.
# Use JSON Schema format
schema:
title: Status
type: string
/things:
# This is a HTTP operation
get:
# Describe this verb here. Note: you can use markdown
description: |
Gets all of the existing `Thing` objects.
# This is array of GET operation parameters:
parameters:
# An example parameter that is in query and is required
-
name: authUuid
in: query
description: authentification UUID
required: true
type: string
-
name: authToken
in: query
description: authentification token
required: true
type: number
format: double
# Expected responses for this operation:
responses:
# Response code
200:
description: Successful response
# A schema describing your response object.
# Use JSON Schema format
schema:
title: ArrayOfThings
type: array
items:
title: Thing
type: object
properties:
uuid:
type: number
name:
type: string
type:
type: string
manufacturer:
type: string
post:
# Describe this verb here. Note: you can use markdown
description: |
Creates `Thing` object.
Returns newly created Thing object.
# This is array of GET operation parameters:
parameters:
# An example parameter that is in query and is required
-
name: authUuid
in: query
description: authentification UUID
required: true
type: string
-
name: authToken
in: query
description: authentification token
required: true
type: number
format: double
# Expected responses for this operation:
responses:
# Response code
200:
description: Successful response
# A schema describing your response object.
# Use JSON Schema format
schema:
title: Thing
type: object
properties:
uuid:
type: number
name:
type: string
type:
type: string
manufacturer:
type: string
/things/{thingUuid}:
# This is a HTTP operation
get:
# Describe this verb here. Note: you can use markdown
description: |
Gets Thing object from the database by thingUuid.
# This is array of GET operation parameters:
parameters:
# An example parameter that is in query and is required
-
name: thingUuid
in: path
description: thing UUID
required: true
type: string
-
name: authUuid
in: query
description: authentification UUID
required: true
type: string
-
name: authToken
in: query
description: authentification token
required: true
type: number
format: double
# Expected responses for this operation:
responses:
# Response code
200:
description: Successful response
# A schema describing your response object.
# Use JSON Schema format
schema:
title: Thing
type: object
properties:
uuid:
type: number
name:
type: string
type:
type: string
manufacturer:
type: string
put:
# Describe this verb here. Note: you can use markdown
description: |
Updates Thing object from the database.
# This is array of GET operation parameters:
parameters:
# An example parameter that is in query and is required
-
name: thingUuid
in: path
description: thing UUID
required: true
type: string
-
name: params
in: query
description: thing parameters
required: true
type: string
-
name: authUuid
in: query
description: authentification UUID
required: true
type: string
-
name: authToken
in: query
description: authentification token
required: true
type: number
format: double
# Expected responses for this operation:
responses:
# Response code
200:
description: Successful response
# A schema describing your response object.
# Use JSON Schema format
schema:
title: Thing
type: object
properties:
uuid:
type: number
name:
type: string
type:
type: string
manufacturer:
type: string
delete:
# Describe this verb here. Note: you can use markdown
description: |
Deletes Thing object from the database.
# This is array of GET operation parameters:
parameters:
# An example parameter that is in query and is required
-
name: thingUuid
in: path
description: thing UUID
required: true
type: string
-
name: authUuid
in: query
description: authentification UUID
required: true
type: string
-
name: authToken
in: query
description: authentification token
required: true
type: number
format: double
# Expected responses for this operation:
responses:
# Response code
200:
description: Successful response
# A schema describing your response object.
# Use JSON Schema format
schema:
title: Thing
type: object
properties:
uuid:
type: number
name:
type: string
type:
type: string
manufacturer:
type: string
/status:
get:
description: |
Gets Mainflux server status.
responses:
'200':
description: Server is running
schema:
title: Status
type: string
/devices:
get:
description: |
Gets all of the existing `Device` objects.
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.
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`.
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.
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.
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