diff options
author | Adam Buczynski <adambuczynski@gmail.com> | 2016-07-27 11:44:14 +1200 |
---|---|---|
committer | Adam Buczynski <adambuczynski@gmail.com> | 2016-07-27 11:44:14 +1200 |
commit | e2b95bda9e57702a34d912fa468a1e3b7e14832e (patch) | |
tree | 6f424e1f7e54d2d9f7428f342c9d43ea3ce442ac /lib/sendgrid.js | |
parent | e41355ee8ed8e025a15c2e171a52b32bb1e067aa (diff) | |
download | sendgrid-nodejs-e2b95bda9e57702a34d912fa468a1e3b7e14832e.zip sendgrid-nodejs-e2b95bda9e57702a34d912fa468a1e3b7e14832e.tar.gz sendgrid-nodejs-e2b95bda9e57702a34d912fa468a1e3b7e14832e.tar.bz2 |
Add helpers
Diffstat (limited to 'lib/sendgrid.js')
-rw-r--r-- | lib/sendgrid.js | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/lib/sendgrid.js b/lib/sendgrid.js index de7e591..de6ee46 100644 --- a/lib/sendgrid.js +++ b/lib/sendgrid.js @@ -16,30 +16,49 @@ function isValidResponse(response) { } //Helper to get a new empty request -function getEmptyRequest() { - return JSON.parse(JSON.stringify(emptyRequest)); +function getEmptyRequest(data) { + let request = JSON.parse(JSON.stringify(emptyRequest)); + if (data && typeof data === 'object') { + for (var key in data) { + if (data.hasOwnProperty(key)) { + request[key] = JSON.parse(JSON.stringify(data[key])); + } + } + } + return request; } -// SendGrid allows for quick and easy access to the v3 Web API -function SendGrid(apiKey, host, globalHeaders) { - var globalRequest = getEmptyRequest(); - globalRequest.host = host || 'api.sendgrid.com'; - globalRequest.headers['Authorization'] = 'Bearer '.concat(apiKey); - globalRequest.headers['Accept'] = 'application/json'; - globalRequest.headers['User-Agent'] = - 'sendgrid/' + package_json.version + ';nodejs'; +//Helper to make headers +function makeHeaders(apiKey, globalHeaders) { + var headers = {}; + headers['Authorization'] = 'Bearer '.concat(apiKey); + headers['Accept'] = 'application/json'; + headers['User-Agent'] = 'sendgrid/' + package_json.version + ';nodejs'; if (globalHeaders) { for (var obj in globalHeaders) { if (globalHeaders.hasOwnProperty(obj) && typeof globalHeaders[obj] === 'object') { for (var key in globalHeaders[obj]) { if (globalHeaders[obj].hasOwnProperty(key)) { - globalRequest.headers[key] = globalHeaders[obj][key]; + headers[key] = globalHeaders[obj][key]; } } } } } + return headers; +} + +//SendGrid allows for quick and easy access to the v3 Web API +function SendGrid(apiKey, host, globalHeaders) { + + //Create global request + var globalRequest = getEmptyRequest({ + host: host || 'api.sendgrid.com', + headers: makeHeaders(apiKey, globalHeaders), + }); + + //Initialize new client var client = new Client(globalRequest); //Interact with the API with this function @@ -74,6 +93,7 @@ function SendGrid(apiKey, host, globalHeaders) { }); }; + //Set requests this.emptyRequest = getEmptyRequest; this.globalRequest = globalRequest; return this; @@ -82,6 +102,7 @@ function SendGrid(apiKey, host, globalHeaders) { //Try to use native promises by default SendGrid.Promise = Promise || null; +//Export module.exports = { SendGrid: SendGrid, emptyRequest: getEmptyRequest(), |