twitst4tz

twitter statistics web application
Log | Files | Refs | README | LICENSE

helpers.js (1411B)


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