diff options
author | scottmotte <scott@scottmotte.com> | 2013-07-22 19:44:39 +0000 |
---|---|---|
committer | scottmotte <scott@scottmotte.com> | 2013-07-22 20:35:27 +0000 |
commit | 43ac2f7ba76754580c96dae840d6d15c225b717f (patch) | |
tree | 54862b9b0b75f92b8033638a6b67acce845423b4 | |
parent | 21cbabbafce4e9c6ba773bb7ee9e7ae5cdf493da (diff) | |
download | sendgrid-nodejs-43ac2f7ba76754580c96dae840d6d15c225b717f.zip sendgrid-nodejs-43ac2f7ba76754580c96dae840d6d15c225b717f.tar.gz sendgrid-nodejs-43ac2f7ba76754580c96dae840d6d15c225b717f.tar.bz2 |
Simplify's filehandler a bit to move away from step.js
-rw-r--r-- | lib/email.js | 44 | ||||
-rw-r--r-- | lib/sendgrid.js | 17 | ||||
-rw-r--r-- | package.json | 1 | ||||
-rw-r--r-- | test/integration/sendgrid.test.js | 31 |
4 files changed, 47 insertions, 46 deletions
diff --git a/lib/email.js b/lib/email.js index dca2b11..a014717 100644 --- a/lib/email.js +++ b/lib/email.js @@ -1,9 +1,10 @@ "use strict"; -var Step = require('step'); -var SmtpapiHeaders = require('./smtpapi_headers'); -var FileHandler = require('./file_handler'); -var _ = require('underscore'); +var SmtpapiHeaders = require('./smtpapi_headers'); +var FileHandler = require('./file_handler'); +var _ = require('underscore'); +var request = require('request'); +var fs = require('fs'); /** * Class to handle storing the properties relative to an email. @@ -186,31 +187,6 @@ Email.prototype.addFile = function(file_object) { }; /** - * This method is used to process files. It uses step.js to asychronously load the contents of each file. - * - * @param {function} callback The callback to call when the method returns - */ -Email.prototype.processFiles = function(callback) { - var self = this; - - function handleFiles() { - for(var i in self.files) { - self.files[i].loadContent(this.parallel()); - } - }; - - function finish(err, messages) { - if (err) { - callback(false, messages); - } else { - callback(true); - } - }; - - Step(handleFiles, finish); -}; - -/** * This method returns the email object is a format to be consumed by the SendGrid.web * using the web api * @@ -236,7 +212,15 @@ Email.prototype.toWebFormat = function() { if (this.files) { for (var index in this.files) { - var file = this.files[index]; + var content; + var file = this.files[index]; + + if (file.url) { + file.content = request(file.url); + } else if (file.path) { + file.content = fs.createReadStream(file.path); + } + web['files[' + file.filename + ']'] = { filename : file.filename, content : file.content || " ", diff --git a/lib/sendgrid.js b/lib/sendgrid.js index 68752a9..991f9e4 100644 --- a/lib/sendgrid.js +++ b/lib/sendgrid.js @@ -3,8 +3,9 @@ var package_json = require('./../package.json'); var nodemailer = require('nodemailer'); var request = require('request'); - -var Email = require('./email'); +var MailComposer = require('mailcomposer').MailComposer; +var mailcomposer = new MailComposer(); +var Email = require('./email'); /* @@ -88,17 +89,7 @@ SendGrid.prototype.web = function(email, callback) { } } - if (email.hasFiles()) { - email.processFiles(function(success, message) { - if (success) { - send_web(); - } else { - cb(false, message); - } - }); - } else { - send_web(); - } + send_web(); }; /* diff --git a/package.json b/package.json index 37ec376..62e8133 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "dependencies": { "underscore": "1.4.4", "nodemailer": "0.4.4", + "mailcomposer": "0.2.1", "mime": "1.2.9", "request": "2.22.0", "step": "0.0.5" diff --git a/test/integration/sendgrid.test.js b/test/integration/sendgrid.test.js index 9a0b919..4432288 100644 --- a/test/integration/sendgrid.test.js +++ b/test/integration/sendgrid.test.js @@ -25,7 +25,7 @@ describe('SendGrid #skip', function () { beforeEach(function() { payload = Object.create(default_payload); - payload.subject += "rest "; + payload.subject += "web "; }); it('has a blank send payload', function(done) { @@ -34,8 +34,6 @@ describe('SendGrid #skip', function () { done(); }); - - done(); }); it('has an optional callback', function(done) { @@ -239,6 +237,33 @@ describe('SendGrid #skip', function () { }); }); + it('handles large files', function(done) { + payload.subject += "handles large files"; + payload.files = [ + {filename: 'rails.zip', url: "https://github.com/rails/rails/archive/master.zip"} + ]; + + sendgrid.send(payload, function(success, message) { + expect(success).to.be.true; + + done(); + }); + }); + + it('handles multiple files', function(done) { + payload.subject += "handles multiple files"; + payload.files = [ + {filename: 'rails.zip', url: "https://github.com/rails/rails/archive/master.zip"}, + {filename: 'icon.jpg', url: 'http://i.imgur.com/2fDh8.jpg'} + ]; + + sendgrid.send(payload, function(success, message) { + expect(success).to.be.true; + + done(); + }); + }); + it('handles the reply_to field', function(done) { payload.subject += "handles the reply_to field"; |