Skip to content

Commit

Permalink
Merge pull request request#1039 from seanstrom/support/extract-helper…
Browse files Browse the repository at this point in the history
…-functions

extract out helper functions to a helper file
  • Loading branch information
mikeal committed Sep 1, 2014
2 parents 49d8a68 + f26f865 commit d72be79
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 45 deletions.
56 changes: 11 additions & 45 deletions index.js
Expand Up @@ -12,15 +12,21 @@
// See the License for the specific language governing permissions and
// limitations under the License.

var cookies = require('./lib/cookies')
, copy = require('./lib/copy')
, extend = require('util')._extend
var extend = require('util')._extend
, cookies = require('./lib/cookies')
, copy = require('./lib/copy')
, helpers = require('./lib/helpers')
, isFunction = helpers.isFunction
, constructObject = helpers.constructObject
, filterForCallback = helpers.filterForCallback
, constructOptionsFrom = helpers.constructOptionsFrom
, paramsHaveRequestBody = helpers.paramsHaveRequestBody
;

// organize params for patch, post, put, head, del
function initParams(uri, options, callback) {
callback = filterForCallback([options, callback])
options = constructOptions(uri, options)
options = constructOptionsFrom(uri, options)

return constructObject()
.extend({callback: callback})
Expand Down Expand Up @@ -90,6 +96,7 @@ request.del = function (uri, options, callback) {
request.jar = function () {
return cookies.jar()
}

request.cookie = function (str) {
return cookies.parse(str)
}
Expand Down Expand Up @@ -151,47 +158,6 @@ request.forever = function (agentOptions, optionsArg) {
return request.defaults(options.done())
}

// Helpers

function constructObject(initialObject) {
initialObject = initialObject || {}

return {
extend: function (object) {
return constructObject(extend(initialObject, object))
},
done: function () {
return initialObject
}
}
}

function constructOptions(uri, options) {
var params = constructObject()
if (typeof uri === 'object') params.extend(uri)
if (typeof uri === 'string') params.extend({uri: uri})
params.extend(options)
return params.done()
}

function filterForCallback(values) {
var callbacks = values.filter(isFunction)
return callbacks[0]
}

function isFunction(value) {
return typeof value === 'function'
}

function paramsHaveRequestBody(params) {
return (
params.options.body ||
params.options.requestBodyStream ||
(params.options.json && typeof params.options.json !== 'boolean') ||
params.options.multipart
)
}

// Exports

module.exports = request
Expand Down
46 changes: 46 additions & 0 deletions lib/helpers.js
@@ -0,0 +1,46 @@
var extend = require('util')._extend

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 uri === 'object') params.extend(uri)
if (typeof uri === 'string') params.extend({uri: uri})
params.extend(options)
return params.done()
}

function filterForCallback(values) {
var callbacks = values.filter(isFunction)
return callbacks[0]
}

function isFunction(value) {
return typeof value === 'function'
}

function paramsHaveRequestBody(params) {
return (
params.options.body ||
params.options.requestBodyStream ||
(params.options.json && typeof params.options.json !== 'boolean') ||
params.options.multipart
)
}

exports.isFunction = isFunction
exports.constructObject = constructObject
exports.constructOptionsFrom = constructOptionsFrom
exports.filterForCallback = filterForCallback
exports.paramsHaveRequestBody = paramsHaveRequestBody

0 comments on commit d72be79

Please sign in to comment.