diff options
author | Eddie Zaneski <eddiezane@gmail.com> | 2015-04-22 00:12:22 -0400 |
---|---|---|
committer | Eddie Zaneski <eddiezane@gmail.com> | 2015-04-22 00:15:38 -0400 |
commit | ae4490ac216828571f3f1c8e22bd06131f1252bd (patch) | |
tree | e42b046e193f52032503ceb5dd02c4886e23067e /lib/sendgrid.js | |
parent | a398b6ce808266a68c51a7c699876760a63c7353 (diff) | |
download | sendgrid-nodejs-ae4490ac216828571f3f1c8e22bd06131f1252bd.zip sendgrid-nodejs-ae4490ac216828571f3f1c8e22bd06131f1252bd.tar.gz sendgrid-nodejs-ae4490ac216828571f3f1c8e22bd06131f1252bd.tar.bz2 |
Add support for API keys
Diffstat (limited to 'lib/sendgrid.js')
-rw-r--r-- | lib/sendgrid.js | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/lib/sendgrid.js b/lib/sendgrid.js index 6bd809a..3a2699e 100644 --- a/lib/sendgrid.js +++ b/lib/sendgrid.js @@ -5,14 +5,31 @@ var _ = require('lodash'); var request = require('request'); var smtpapi_lib = require('smtpapi'); var Email = require('./email'); -var Sendgrid = function(api_user, api_key, options) { +var Sendgrid = function(apiUserOrKey, apiKeyOrOptions, options) { if( !(this instanceof Sendgrid) ) { - return new Sendgrid(api_user, api_key, options); + return new Sendgrid(apiUserOrKey, apiKeyOrOptions, options); + } + + // Check if given a username + password or api key + if (typeof apiKeyOrOptions === 'string') { + // Username and password + this.api_user = apiUserOrKey; + this.api_key = apiKeyOrOptions; + this.options = options || {}; + } else if (typeof apiKeyOrOptions === 'object' || apiKeyOrOptions === undefined) { + // API key + this.api_key = apiUserOrKey; + this.api_user = null; + + // With options + this.options = apiKeyOrOptions || {}; + } else { + // Won't be thrown? + throw new Error('Need a username + password or api key!'); } var _this = this; - this.options = options || {}; // do this to mantain similarity to other libs var uriParts = {}; @@ -45,9 +62,14 @@ var Sendgrid = function(api_user, api_key, options) { } }; + // Using api key + if (this.api_user === null) { + postOptions.headers['Authorization'] = 'Bearer ' + this.api_key; + } + var options = _.merge(postOptions, this.options); - var req = request(options, function(err, resp, body) { + var req = request(options, function(err, resp, body) { var json; if(err) return callback(err, null); @@ -70,8 +92,12 @@ var Sendgrid = function(api_user, api_key, options) { }); var form = email.toWebFormat(); - form['api_user'] = api_user; - form['api_key'] = api_key; + + // Using username + password + if (this.api_user !== null) { + form['api_user'] = this.api_user; + form['api_key'] = this.api_key; + } var reqForm = req.form(); @@ -105,8 +131,6 @@ var Sendgrid = function(api_user, api_key, options) { this.version = package_json.version; this.Email = Email; this.smtpapi = smtpapi_lib; - this.api_user = api_user; - this.api_key = api_key; this.send = send; this.options = this.options; return this; |