UNPKG

2.08 kBJavaScriptView Raw
1'use strict'
2
3var extend = require('util')._extend
4 , jsonSafeStringify = require('json-stringify-safe')
5 , crypto = require('crypto')
6
7function deferMethod() {
8 if(typeof setImmediate === 'undefined') {
9 return process.nextTick
10 }
11
12 return setImmediate
13}
14
15function constructObject(initialObject) {
16 initialObject = initialObject || {}
17
18 return {
19 extend: function (object) {
20 return constructObject(extend(initialObject, object))
21 },
22 done: function () {
23 return initialObject
24 }
25 }
26}
27
28function constructOptionsFrom(uri, options) {
29 var params = constructObject()
30 if (typeof options === 'object') {
31 params.extend(options).extend({uri: uri})
32 } else if (typeof uri === 'string') {
33 params.extend({uri: uri})
34 } else {
35 params.extend(uri)
36 }
37 return params.done()
38}
39
40function isFunction(value) {
41 return typeof value === 'function'
42}
43
44function filterForCallback(values) {
45 var callbacks = values.filter(isFunction)
46 return callbacks[0]
47}
48
49function paramsHaveRequestBody(params) {
50 return (
51 params.options.body ||
52 params.options.requestBodyStream ||
53 (params.options.json && typeof params.options.json !== 'boolean') ||
54 params.options.multipart
55 )
56}
57
58function safeStringify (obj) {
59 var ret
60 try {
61 ret = JSON.stringify(obj)
62 } catch (e) {
63 ret = jsonSafeStringify(obj)
64 }
65 return ret
66}
67
68function md5 (str) {
69 return crypto.createHash('md5').update(str).digest('hex')
70}
71
72function isReadStream (rs) {
73 return rs.readable && rs.path && rs.mode
74}
75
76function toBase64 (str) {
77 return (new Buffer(str || '', 'ascii')).toString('base64')
78}
79
80exports.isFunction = isFunction
81exports.constructObject = constructObject
82exports.constructOptionsFrom = constructOptionsFrom
83exports.filterForCallback = filterForCallback
84exports.paramsHaveRequestBody = paramsHaveRequestBody
85exports.safeStringify = safeStringify
86exports.md5 = md5
87exports.isReadStream = isReadStream
88exports.toBase64 = toBase64
89exports.defer = deferMethod()