verdaccio/node_modules/request/lib/helpers.js

90 lines
2.0 KiB
JavaScript

'use strict'
var extend = require('util')._extend
, jsonSafeStringify = require('json-stringify-safe')
, crypto = require('crypto')
function deferMethod() {
if(typeof setImmediate === 'undefined') {
return process.nextTick
}
return setImmediate
}
function constructObject(initialObject) {
initialObject = initialObject || {}
return {
extend: function (object) {
return constructObject(extend(initialObject, object))
},
done: function () {
return initialObject
}
}
}
function constructOptionsFrom(uri, options) {
var params = constructObject()
if (typeof options === 'object') {
params.extend(options).extend({uri: uri})
} else if (typeof uri === 'string') {
params.extend({uri: uri})
} else {
params.extend(uri)
}
return params.done()
}
function isFunction(value) {
return typeof value === 'function'
}
function filterForCallback(values) {
var callbacks = values.filter(isFunction)
return callbacks[0]
}
function paramsHaveRequestBody(params) {
return (
params.options.body ||
params.options.requestBodyStream ||
(params.options.json && typeof params.options.json !== 'boolean') ||
params.options.multipart
)
}
function safeStringify (obj) {
var ret
try {
ret = JSON.stringify(obj)
} catch (e) {
ret = jsonSafeStringify(obj)
}
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 (new Buffer(str || '', 'ascii')).toString('base64')
}
exports.isFunction = isFunction
exports.constructObject = constructObject
exports.constructOptionsFrom = constructOptionsFrom
exports.filterForCallback = filterForCallback
exports.paramsHaveRequestBody = paramsHaveRequestBody
exports.safeStringify = safeStringify
exports.md5 = md5
exports.isReadStream = isReadStream
exports.toBase64 = toBase64
exports.defer = deferMethod()