lib/index.js
function addDefinition(defName) {
  var definition = definitions[defName];
  return function(params, done) {
    if (!done && typeof params === 'function') {
      done = params;
      params = {};
    }

    var url = this.config.baseUrl + definition.url;
    var xtraParams = {};
    xtraParams.fmt = this.config.responseFormat;
    xtraParams.api_key = this.config.apiKey;

    try {
      Object.keys(definition.params).forEach(function(paramName) {
        var paramDef = definition.params[paramName];
        if (!params[paramName]) {
          if (paramDef.required) {
            throw new Error('Parameter ' + paramName + ' is required');
          } else {
            return;
          }
        }
        if (paramDef.location === 'url') {
          url = url.replace(new RegExp('{' + paramName + '}', 'g'), params[paramName]);
        } else if (paramDef.location === 'querystring') {
          xtraParams[paramName] = params[paramName];
        }
      });
    } catch (e) {
      return done(e);
    }

    return request
      .get(url)
      .query(xtraParams)
      .end(function onEnd(err, res) {
        return done(err, res.body);
      });
  };
}
function addDefinition(defName) {
  var definition = definitions[defName];
  return function(params, done) {
    if (!done && typeof params === 'function') {
      done = params;
      params = {};
    }

    var url = this.config.baseUrl + definition.url;
    var xtraParams = {};
    xtraParams.fmt = this.config.responseFormat;
    xtraParams.api_key = this.config.apiKey;

    try {
      Object.keys(definition.params).forEach(function(paramName) {
        var paramDef = definition.params[paramName];
        if (!params[paramName]) {
          if (paramDef.required) {
            throw new Error('Parameter ' + paramName + ' is required');
          } else {
            return;
          }
        }
        if (paramDef.location === 'url') {
          url = url.replace(new RegExp('{' + paramName + '}', 'g'), params[paramName]);
        } else if (paramDef.location === 'querystring') {
          xtraParams[paramName] = params[paramName];
        }
      });
    } catch (e) {
      return done(e);
    }

    return request
      .get(url)
      .query(xtraParams)
      .end(function onEnd(err, res) {
        return done(err, res.body);
      });
  };
}
function addDefinition ( defName ) { var definition = definitions [ defName ] ; return function ( params , done ) { if ( ! done && typeof params === 'function' ) { done = params ; params = { } ; } var url = this . config . baseUrl + definition . url ; var xtraParams = { } ; xtraParams . fmt = this . config . responseFormat ; xtraParams . api_key = this . config . apiKey ; try { Object . keys ( definition . params ) . forEach ( function ( paramName ) { var paramDef = definition . params [ paramName ] ; if ( ! params [ paramName ] ) { if ( paramDef . required ) { throw new Error ( 'Parameter ' + paramName + ' is required' ) ; } else { return ; } } if ( paramDef . location === 'url' ) { url = url . replace ( new RegExp ( '{' + paramName + '}' , 'g' ) , params [ paramName ] ) ; } else if ( paramDef . location === 'querystring' ) { xtraParams [ paramName ] = params [ paramName ] ; } } ) ; } catch ( e ) { return done ( e ) ; } return request . get ( url ) . query ( xtraParams ) . end ( function onEnd ( err , res ) { return done ( err , res . body ) ; } ) ; } ; }
Generic handler for API client method
Generic handler for API client method