UNPKG

on-http-y1

Version:
218 lines (200 loc) 7.09 kB
// Copyright 2016, EMC Inc. 'use strict'; var injector = require('../../../index').injector; var controller = injector.get('Http.Services.Swagger').controller; var addLinks = injector.get('Http.Services.Swagger').addLinksHeader; var pollers = injector.get('Http.Services.Api.Pollers'); var Errors = injector.get('Errors'); var Constants = injector.get('Constants'); /** * @api {get} /api/2.0/pollers/library GET /library * @apiVersion 2.0.0 * @apiDescription get list of possible pollers services * @apiName pollers-library-get * @apiGroup pollers * @apiSuccess {json} pollers list of the available library pollers. */ var pollersLibGet = controller(function() { return pollers.getPollerLib(); }); /** * @api {get} /api/2.0/pollers/library/:identifier GET /library/:identifier * @apiVersion 2.0.0 * @apiDescription get a single poller * @apiName pollers-library-service-get * @apiGroup pollers * @apiParam {String} identifier String representation of the ObjectId * @apiParamExample {String} Identifier-Example: * "ipmi" * @apiSuccess {json} poller the specfied poller library * @apiError NotFound There is no poller in the library with <code>identifier</code> * @apiErrorExample Error-Response: * HTTP/1.1 404 Not Found * { * "error": "Not Found" * } */ var pollersLibByIdGet = controller(function(req) { return pollers.getPollerLibById(req.swagger.params.identifier.value); }); /** * @api {get} /api/2.0/pollers GET / * @apiVersion 2.0.0 * @apiDescription get a list of all pollers * @apiName pollers-get * @apiGroup pollers * @apiSuccess {json} pollers list of pollers or an empty object if there are none. */ var pollersGet = controller(function(req, res) { var options = { skip: req.swagger.query.$skip, limit: req.swagger.query.$top }; if (req.query.type) { req.query.name = Constants.WorkItems.Pollers[req.query.type.toUpperCase()]; delete req.query.type; } return pollers.getPollers(req.query, options) .tap(function(pollers) { return addLinks(req, res, 'workitems', req.query); }); }); /** * @api {get} /api/2.0/pollers/:identifier GET /:identifier * @apiVersion 2.0.0 * @apiDescription Get specifics of the specified poller. * @apiName poller-get * @apiGroup pollers * @apiParam {String} identifier String representation of the ObjectId * @apiSuccess {json} poller the poller with the <code>id</code> * @apiError identifierNotFound The <code>identifier</code> could not be found. * @apiErrorExample Error-Response: * HTTP/1.1 404 Not Found * { * "error": "Not Found" * } */ var pollersIdGet = controller(function(req) { return pollers.getPollersById(req.swagger.params.identifier.value); }); /** * @api {post} /api/2.0/pollers POST / * @apiVersion 2.0.0 * @apiDescription create a poller * @apiName pollers-create * @apiGroup pollers * @apiError E_VALIDATION invalid Attributes. * @apiErrorExample E_VALIDATION: * { * "error": "E_VALIDATION", * "status": 400, * "summary": "1 attributes are invalid", * "model": "workitems", * "invalidAttributes": { * "pollInterval": [ * { * "rule": "integer", * "message": * "`undefined` should be a integer (instead of \"null\", which is a object)" * }, * { * "rule": "required", * "message": "\"required\" validation rule failed for input: null" * } * ] * } * } */ var pollersPost = controller({success: 201}, function(req) { req.body.name = Constants.WorkItems.Pollers[req.body.type.toUpperCase()]; delete req.body.type; return pollers.postPollers(req.body); }); /** * @api {patch} /api/2.0/pollers/:identifier PATCH /:identifier * @apiVersion 2.0.0 * @apiDescription update a poller * @apiName pollers-update * @apiGroup pollers * @apiParam {String} identifier String representation of the ObjectId * @apiSuccess {json} poller the patched poller with the <code>id</code> * @apiError NotFound The <code>identifier</code> could not be found. * @apiErrorExample Error-Response: * HTTP/1.1 404 Not Found * { * "error": "Not Found" * } */ var pollersPatch = controller(function(req) { if (req.body.type) { req.body.name = Constants.WorkItems.Pollers[req.body.type.toUpperCase()]; delete req.body.type; } return pollers.patchPollersById(req.swagger.params.identifier.value, req.body); }); /** * @api {delete} /api/2.0/pollers/:identifier DELETE /:id * @apiVersion 2.0.0 * @apiDescription Delete all pollers of specified device. * @apiName poller-delete * @apiGroup pollers * @apiParam {String} identifier String representation of the ObjectId * @apiSuccess {nothing} nothing it doesn't return anything if Successful * @apiError NotFound The <code>identifier</code> could not be found. * @apiErrorExample Error-Response: * HTTP/1.1 404 Not Found * { * "error": "Not Found" * } */ var pollersDelete = controller({success: 204}, function(req) { return pollers.deletePollersById(req.swagger.params.identifier.value); }); /** * @api {get} /api/2.0/pollers/:identifier/data GET /:identifier/data * @apiVersion 2.0.0 * @apiDescription Get data for the specific poller. * @apiName poller-get-data * @apiGroup pollers * @apiParam {String} identifier (ip address or NodeId) for the data from a poller * @apiError NotFound1 The <code>identifier</code> could not be found. * @apiError NotFound2 There is no data for the poller with the <code>identifier</code>. * @apiErrorExample Error-Response: * HTTP/1.1 404 Not Found * { * "error": "Not Found" * } */ var pollersDataGet = controller( {send204OnEmpty:true}, function (req){ return pollers.getPollersByIdData(req.swagger.params.identifier.value); }); /** * @api {get} /api/2.0/pollers/:identifier/data/current GET /:identifier/data/current * @apiVersion 2.0.0 * @apiDescription Get only the most recent data entry for the specific poller. * @apiName poller-get-data-current * @apiGroup pollers * @apiParam {String} identifier (ip address or NodeId) for the data from a poller * @apiError NotFound1 The <code>identifier</code> could not be found. * @apiError NotFound2 There is no data for the poller with the <code>identifier</code>. * @apiErrorExample Error-Response: * HTTP/1.1 404 Not Found * { * "error": "Not Found" * } */ var pollersCurrentDataGet = controller( {send204OnEmpty:true}, function(req) { return pollers.getPollersByIdData(req.swagger.params.identifier.value, { latestOnly: true }); }); module.exports = { pollersLibGet: pollersLibGet, pollersLibByIdGet: pollersLibByIdGet, pollersGet: pollersGet, pollersIdGet: pollersIdGet, pollersPost: pollersPost, pollersPatch: pollersPatch, pollersDelete: pollersDelete, pollersDataGet: pollersDataGet, pollersCurrentDataGet: pollersCurrentDataGet, };