UNPKG

908 BJavaScriptView Raw
1var middleware = require('./middleware')
2var isStream = require('../isStream')
3var setBodyToString = require('../setBodyToString')
4var setHeaderTo = require('../setHeaderTo')
5var shouldParseAs = require('../shouldParseAs')
6var streamToString = require('../streamToString')
7
8module.exports = middleware('json', function (request, next) {
9 if (request.body instanceof Object && !isStream(request.body)) {
10 setBodyToString(request, JSON.stringify(request.body))
11 setHeaderTo(request, 'content-type', 'application/json')
12 }
13
14 setHeaderTo(request, 'accept', 'application/json')
15
16 return next().then(function (response) {
17 if (shouldParseAs(response, 'json', request)) {
18 return streamToString(response.body).then(function (jsonString) {
19 response.body = JSON.parse(jsonString, request.options.jsonReviver)
20 return response
21 })
22 } else {
23 return response
24 }
25 })
26})