| 'use strict' |
| |
| var jsonSafeStringify = require('json-stringify-safe') |
| var crypto = require('crypto') |
| var Buffer = require('safe-buffer').Buffer |
| |
| var defer = typeof setImmediate === 'undefined' |
| ? process.nextTick |
| : setImmediate |
| |
| function paramsHaveRequestBody (params) { |
| return ( |
| params.body || |
| params.requestBodyStream || |
| (params.json && typeof params.json !== 'boolean') || |
| params.multipart |
| ) |
| } |
| |
| function safeStringify (obj, replacer) { |
| var ret |
| try { |
| ret = JSON.stringify(obj, replacer) |
| } catch (e) { |
| ret = jsonSafeStringify(obj, replacer) |
| } |
| return ret |
| } |
| |
| function md5 (str) { |
| return crypto.createHash('md5').update(str).digest('hex') |
| } |
| |
| function isReadStream (rs) { |
| return rs.readable && rs.path && rs.mode |
| } |
| |
| function toBase64 (str) { |
| return Buffer.from(str || '', 'utf8').toString('base64') |
| } |
| |
| function copy (obj) { |
| var o = {} |
| Object.keys(obj).forEach(function (i) { |
| o[i] = obj[i] |
| }) |
| return o |
| } |
| |
| function version () { |
| var numbers = process.version.replace('v', '').split('.') |
| return { |
| major: parseInt(numbers[0], 10), |
| minor: parseInt(numbers[1], 10), |
| patch: parseInt(numbers[2], 10) |
| } |
| } |
| |
| exports.paramsHaveRequestBody = paramsHaveRequestBody |
| exports.safeStringify = safeStringify |
| exports.md5 = md5 |
| exports.isReadStream = isReadStream |
| exports.toBase64 = toBase64 |
| exports.copy = copy |
| exports.version = version |
| exports.defer = defer |