helpers.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. 'use strict'
  2. var jsonSafeStringify = require('json-stringify-safe')
  3. , crypto = require('crypto')
  4. function deferMethod() {
  5. if (typeof setImmediate === 'undefined') {
  6. return process.nextTick
  7. }
  8. return setImmediate
  9. }
  10. function isFunction(value) {
  11. return typeof value === 'function'
  12. }
  13. function paramsHaveRequestBody(params) {
  14. return (
  15. params.body ||
  16. params.requestBodyStream ||
  17. (params.json && typeof params.json !== 'boolean') ||
  18. params.multipart
  19. )
  20. }
  21. function safeStringify (obj) {
  22. var ret
  23. try {
  24. ret = JSON.stringify(obj)
  25. } catch (e) {
  26. ret = jsonSafeStringify(obj)
  27. }
  28. return ret
  29. }
  30. function md5 (str) {
  31. return crypto.createHash('md5').update(str).digest('hex')
  32. }
  33. function isReadStream (rs) {
  34. return rs.readable && rs.path && rs.mode
  35. }
  36. function toBase64 (str) {
  37. return (new Buffer(str || '', 'utf8')).toString('base64')
  38. }
  39. function copy (obj) {
  40. var o = {}
  41. Object.keys(obj).forEach(function (i) {
  42. o[i] = obj[i]
  43. })
  44. return o
  45. }
  46. function version () {
  47. var numbers = process.version.replace('v', '').split('.')
  48. return {
  49. major: parseInt(numbers[0], 10),
  50. minor: parseInt(numbers[1], 10),
  51. patch: parseInt(numbers[2], 10)
  52. }
  53. }
  54. exports.isFunction = isFunction
  55. exports.paramsHaveRequestBody = paramsHaveRequestBody
  56. exports.safeStringify = safeStringify
  57. exports.md5 = md5
  58. exports.isReadStream = isReadStream
  59. exports.toBase64 = toBase64
  60. exports.copy = copy
  61. exports.version = version
  62. exports.defer = deferMethod()