@request/api
Version:
Sugar API for @request/interface consumers
49 lines (37 loc) • 986 B
JavaScript
var dcopy = require('deep-copy')
module.exports = (config, define) => {
var request = define.request
function init (url, options, callback) {
var opts = {}
if (typeof options === 'object') {
opts = dcopy(options)
}
else if (typeof url === 'object') {
opts = dcopy(url)
}
var cb
if (typeof callback === 'function') {
cb = callback
}
else if (typeof options === 'function') {
cb = options
}
opts.url = (typeof url === 'string') ? url : (opts.url || opts.uri)
if (cb || opts.callback) {
opts.callback = cb || opts.callback
}
return opts
}
function api (url, options, callback) {
var opts = init(url, options, callback)
return request(opts)
}
for (var key in config.method) {
api[key] = ((key) => (url, options, callback) => {
var opts = init(url, options, callback)
opts.method = key.toUpperCase()
return request(opts)
})(key)
}
return api
}