1 | var responseBodyTypes = {
|
2 | json: function (response) {
|
3 | return contentTypeIs(response, 'application/json')
|
4 | },
|
5 | text: function (response) {
|
6 | return contentTypeIsText(response) || contentTypeIs(response, 'application/javascript')
|
7 | },
|
8 | form: function (response) {
|
9 | return contentTypeIs(response, 'application/x-www-form-urlencoded')
|
10 | },
|
11 | stream: function () {
|
12 | return false
|
13 | }
|
14 | }
|
15 |
|
16 | function contentTypeIsText (response) {
|
17 | return contentTypeIs(response, 'text/.*')
|
18 | }
|
19 |
|
20 | function contentTypeIs (response, expectedContentType) {
|
21 | var re = new RegExp('^\\s*' + expectedContentType + '\\s*($|;)')
|
22 | return re.test(response.headers['content-type'])
|
23 | }
|
24 |
|
25 | module.exports = function (response, type, request) {
|
26 | if (request.options.responseBody) {
|
27 | return type === request.options.responseBody
|
28 | } else {
|
29 | var bodyType = responseBodyTypes[type]
|
30 | if (bodyType) {
|
31 | return bodyType(response)
|
32 | }
|
33 | }
|
34 | }
|