diff options
author | Tom Kirkpatrick <tom@systemseed.com> | 2016-08-22 11:00:53 +0200 |
---|---|---|
committer | Tom Kirkpatrick <tom@systemseed.com> | 2016-08-22 11:00:53 +0200 |
commit | d448ecae0ba4ce60733d4729ada035fddc794410 (patch) | |
tree | ca22ada1dccb993bed9bef87cf17117a5af59ccf | |
parent | 439e1732a743098fe38b5b8d02b93ca03208b0d7 (diff) | |
download | sendgrid-nodejs-d448ecae0ba4ce60733d4729ada035fddc794410.zip sendgrid-nodejs-d448ecae0ba4ce60733d4729ada035fddc794410.tar.gz sendgrid-nodejs-d448ecae0ba4ce60733d4729ada035fddc794410.tar.bz2 |
Make SendGrid a factory that enables multiple prototype instances
-rw-r--r-- | lib/sendgrid.js | 79 |
1 files changed, 42 insertions, 37 deletions
diff --git a/lib/sendgrid.js b/lib/sendgrid.js index eb58f84..6681d28 100644 --- a/lib/sendgrid.js +++ b/lib/sendgrid.js @@ -64,55 +64,60 @@ function makeHeaders(apiKey, globalHeaders) { * SendGrid allows for quick and easy access to the v3 Web API */ function SendGrid(apiKey, host, globalHeaders) { + return new SendGridInstance(apiKey, host, globalHeaders); +} +/** + * SendGrid allows for quick and easy access to the v3 Web API + */ +function SendGridInstance(apiKey, host, globalHeaders) { //Create global request - var globalRequest = getEmptyRequest({ + this.globalRequest = getEmptyRequest({ host: host || 'api.sendgrid.com', headers: makeHeaders(apiKey, globalHeaders), }); //Initialize new client - var client = new Client(globalRequest); + this.client = new Client(this.globalRequest); +} - //Interact with the API with this function - SendGrid.API = function(request, callback) { +//Interact with the API with this function +SendGridInstance.prototype.API = function(request, callback) { + var self = this; - //If no callback provided, we will return a promise - if (!callback) { - if (!SendGrid.Promise) { - throw new SendGridError('Promise API not supported'); - } - return new SendGrid.Promise(function(resolve, reject) { - client.API(request, function(response) { - if (isValidResponse(response)) { - resolve(response); - } - else { - var error = new SendGridError('Response error'); - error.response = response; - reject(error); - } - }); - }); + //If no callback provided, we will return a promise + if (!callback) { + if (!SendGrid.Promise) { + throw new SendGridError('Promise API not supported'); } - - //Use callback - client.API(request, function(response) { - if (isValidResponse(response)) { - callback(null, response); - } - else { - var error = new SendGridError('Response error'); - callback(error, response); - } + return new SendGrid.Promise(function(resolve, reject) { + self.client.API(request, function(response) { + if (isValidResponse(response)) { + resolve(response); + } + else { + var error = new SendGridError('Response error'); + error.response = response; + reject(error); + } + }); }); - }; + } - //Set requests - SendGrid.emptyRequest = getEmptyRequest; - SendGrid.globalRequest = globalRequest; - return SendGrid; -} + //Use callback + self.client.API(request, function(response) { + if (isValidResponse(response)) { + callback(null, response); + } + else { + var error = new SendGridError('Response error'); + callback(error, response); + } + }); +}; + +//Set requests +SendGridInstance.prototype.emptyRequest = getEmptyRequest; //Try to use native promises by default if (typeof Promise !== 'undefined') { |