UNPKG

hunterio

Version:
50 lines (37 loc) 1.28 kB
var fs = require('fs'); var async = require('async'); var request = require('request-json'); var calls = require('./calls'); function SDK(key, version, host) { var clientBaseUrl = 'https://api.hunter.io' + '/' + (version || 'v2') + '/'; this.client = request.createClient(clientBaseUrl); this.key = key; } Object.keys(calls).forEach(function(call) { var def = calls[call]; SDK.prototype[call] = function() { var args = [].slice.call(arguments); var params = def.params || []; var namedArgs = args.splice(0, params.length); var path = params.reduce(function(prev, key, index) { return prev.replace('{' + key + '}', namedArgs[index]); }, def.path); var queryParamHash = args.shift(); path += Object.keys(queryParamHash).reduce(function(str, key) { return str + '&' + key + '=' + encodeURIComponent(queryParamHash[key]); }, '?api_key=' + this.key); var clientArgs = [path]; if (def.method === 'post' || def.method === 'put' || def.method === 'patch') { clientArgs.push(args.shift()); } var callback = args.shift(); clientArgs.push(function(err, res, body) { if (err) { return callback(err, null); } callback(null, body, res); }); this.client[def.method].apply(this.client, clientArgs); }; }); module.exports = SDK;