/
client.js
44 lines (34 loc) · 937 Bytes
/
client.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
var qs = require('qs')
var parse = () => ({options, res, res: {headers}, body, raw}) => {
raw = body
var header = Object.keys(headers)
.find((name) => name.toLowerCase() === 'content-type')
if (/json|javascript/.test(headers[header])) {
try {
body = JSON.parse(body)
}
catch (err) {}
}
else if (/application\/x-www-form-urlencoded/.test(headers[header])) {
try {
// use qs instead of querystring for nested objects
body = qs.parse(body)
}
catch (err) {}
}
// some providers return wrong `content-type` like: text/html or text/plain
else {
try {
body = JSON.parse(body)
}
catch (err) {
// use qs instead of querystring for nested objects
body = qs.parse(body)
}
}
return {options, res, body, raw}
}
module.exports = require('request-compose').extend({
Request: {oauth: require('request-oauth')},
Response: {parse}
}).client