code: function() {
    var args = Array.from(arguments)
    var url = _.get(args, '[0]', '')
    var params = _.get(args, '[1]', {})
  
    // if we specify all of the options as a param object, we're basically done
    // and we can skip all of the parameterization checks below
    if (_.isPlainObject(_.get(args, '[0]', {})))
    {
      params = _.get(args, '[0]', {})
    }
     else
    {
      params = _.assign({}, { url }, params)
    }
  
    return _.assign({}, params, { op: 'request' })
  }
docs: /*
  syntax: request(url|connection[, config])
  
  json: {
  "op": "request",
  "params": {
  "method": "",
  "connection": "",
  "url": "",
  "username": "",
  "password": "",
  "params": {},
  "data": {},
  "headers": {}
  }
  }