added support for _delay in query string to delay response of request on per request basis (#673)

* added support for passing _delay as query parameter to delay response by X milliseconds

* added tests / fixed linting error
This commit is contained in:
Ryan Zec
2017-11-06 07:10:55 -05:00
committed by typicode
parent dfbfd56511
commit f5fd222ae3
5 changed files with 83 additions and 0 deletions

View File

@ -0,0 +1,11 @@
const pause = require('connect-pause')
module.exports = function delay(req, res, next) {
// NOTE: for some reason unknown to me, if the default is 0, the tests seems to add 2 seconds
// NOTE: to each test, a default value of 1 does not seem to be effected by that issue
const _delay = !isNaN(parseFloat(req.query._delay))
? parseFloat(req.query._delay)
: 1
delete req.query._delay
pause(_delay)(req, res, next)
}

View File

@ -1,8 +1,10 @@
const express = require('express')
const pluralize = require('pluralize')
const delay = require('./delay')
module.exports = opts => {
const router = express.Router()
router.use(delay)
// Rewrite URL (/:resource/:id/:nested -> /:nested) and request query
function get(req, res, next) {

View File

@ -4,10 +4,12 @@ const pluralize = require('pluralize')
const write = require('./write')
const getFullURL = require('./get-full-url')
const utils = require('../utils')
const delay = require('./delay')
module.exports = (db, name, opts) => {
// Create router
const router = express.Router()
router.use(delay)
// Embed function used in GET /name and GET /name/id
function embed(resource, e) {

View File

@ -1,9 +1,11 @@
const express = require('express')
const write = require('./write')
const getFullURL = require('./get-full-url')
const delay = require('./delay')
module.exports = (db, name) => {
const router = express.Router()
router.use(delay)
function show(req, res, next) {
res.locals.data = db.get(name).value()