summaryrefslogtreecommitdiffstats
path: root/lib/sendgrid.js
diff options
context:
space:
mode:
authorAdam Buczynski <adambuczynski@gmail.com>2016-07-27 11:44:14 +1200
committerAdam Buczynski <adambuczynski@gmail.com>2016-07-27 11:44:14 +1200
commite2b95bda9e57702a34d912fa468a1e3b7e14832e (patch)
tree6f424e1f7e54d2d9f7428f342c9d43ea3ce442ac /lib/sendgrid.js
parente41355ee8ed8e025a15c2e171a52b32bb1e067aa (diff)
downloadsendgrid-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.js43
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(),