3 var jsonSafeStringify = require('json-stringify-safe')
4 , crypto = require('crypto')
6 function deferMethod() {
7 if (typeof setImmediate === 'undefined') {
8 return process.nextTick
14 function isFunction(value) {
15 return typeof value === 'function'
18 function paramsHaveRequestBody(params) {
21 params.requestBodyStream ||
22 (params.json && typeof params.json !== 'boolean') ||
27 function safeStringify (obj) {
30 ret = JSON.stringify(obj)
32 ret = jsonSafeStringify(obj)
38 return crypto.createHash('md5').update(str).digest('hex')
41 function isReadStream (rs) {
42 return rs.readable && rs.path && rs.mode
45 function toBase64 (str) {
46 return (new Buffer(str || '', 'utf8')).toString('base64')
51 Object.keys(obj).forEach(function (i) {
58 var numbers = process.version.replace('v', '').split('.')
60 major: parseInt(numbers[0], 10),
61 minor: parseInt(numbers[1], 10),
62 patch: parseInt(numbers[2], 10)
66 exports.isFunction = isFunction
67 exports.paramsHaveRequestBody = paramsHaveRequestBody
68 exports.safeStringify = safeStringify
70 exports.isReadStream = isReadStream
71 exports.toBase64 = toBase64
73 exports.version = version
74 exports.defer = deferMethod()