From 3d5bf922de2fa069f426b852ca09ae960b05612a Mon Sep 17 00:00:00 2001 From: Jorge Condomi Date: Tue, 21 Apr 2015 23:03:55 -0300 Subject: [PATCH 1/3] Tidying up --- index.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/index.js b/index.js index 56a12cb..c5587b2 100644 --- a/index.js +++ b/index.js @@ -1,10 +1,10 @@ -var Imap = require('imap'); -var util = require('util'); -var EventEmitter = require('events').EventEmitter; -var MailParser = require("mailparser").MailParser; -var fs = require("fs"); -var path = require('path'); -var async = require('async'); +var Imap = require('imap'), + util = require('util'), + EventEmitter = require('events').EventEmitter, + MailParser = require("mailparser").MailParser, + fs = require("fs"), + path = require('path'), + async = require('async'); module.exports = MailListener; @@ -82,7 +82,7 @@ function parseUnread() { if (err) { self.emit('error', err); } else if (results.length > 0) { - async.each(results, function( result, callback) { + async.each(results, function(result, callback) { var f = self.imap.fetch(result, { bodies: '', markSeen: self.markSeen @@ -93,15 +93,15 @@ function parseUnread() { parser.on("end", function(mail) { if (!self.mailParserOptions.streamAttachments && mail.attachments && self.attachments) { - async.each(mail.attachments, function( attachment, callback) { + async.each(mail.attachments, function(attachment, callback) { fs.writeFile(self.attachmentOptions.directory + attachment.generatedFileName, attachment.content, function(err) { - if(err) { + if (err) { self.emit('error', err); - callback() + callback(); } else { attachment.path = path.resolve(self.attachmentOptions.directory + attachment.generatedFileName); self.emit('attachment', attachment); - callback() + callback(); } }); }, function(err){ @@ -109,7 +109,7 @@ function parseUnread() { callback() }); } else { - self.emit('mail',mail,seqno,attributes); + self.emit('mail', mail, seqno, attributes); } }); parser.on("attachment", function (attachment) { @@ -126,7 +126,7 @@ function parseUnread() { self.emit('error', err); }); }, function(err){ - if( err ) { + if(err) { self.emit('error', err); } }); From 9872eab25451e993e5de8c3194890e79dbdcc7e0 Mon Sep 17 00:00:00 2001 From: Jorge Condomi Date: Tue, 21 Apr 2015 23:21:00 -0300 Subject: [PATCH 2/3] Done event added --- index.js | 5 +++++ readme.md | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/index.js b/index.js index c5587b2..ec34446 100644 --- a/index.js +++ b/index.js @@ -82,6 +82,7 @@ function parseUnread() { if (err) { self.emit('error', err); } else if (results.length > 0) { + var remaining = results.length; async.each(results, function(result, callback) { var f = self.imap.fetch(result, { bodies: '', @@ -111,6 +112,10 @@ function parseUnread() { } else { self.emit('mail', mail, seqno, attributes); } + remaining = remaining - 1; + if (remaining == 0) { + self.emit('done'); + } }); parser.on("attachment", function (attachment) { self.emit('attachment', attachment); diff --git a/readme.md b/readme.md index 95a586d..95de149 100644 --- a/readme.md +++ b/readme.md @@ -63,6 +63,11 @@ mailListener.on("attachment", function(attachment){ console.log(attachment.path); }); +mailListener.on("done", function(attachment){ + console.log("No more messages"); +}); + + // it's possible to access imap object from node-imap library for performing additional actions. E.x. mailListener.imap.move(:msguids, :mailboxes, function(){}) From d8c70d02ce1dc76eecec19c39b99260cd799008f Mon Sep 17 00:00:00 2001 From: Jorge Condomi Date: Sat, 25 Apr 2015 03:25:12 -0300 Subject: [PATCH 3/3] Emitting the event after a zero results search too --- index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.js b/index.js index ec34446..7946c00 100644 --- a/index.js +++ b/index.js @@ -135,6 +135,8 @@ function parseUnread() { self.emit('error', err); } }); + } else { + self.emit('done'); } }); }