diff --git a/.gitignore b/.gitignore index d344ba6..28db328 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ config.json +node_modules + diff --git a/config.json.example b/config.json.example index 89166c2..882eb6c 100644 --- a/config.json.example +++ b/config.json.example @@ -9,8 +9,7 @@ "smtp": { "host": "smtp.gmail.com", "ssl": true - } - + }, "post_url": "http://example.com/POST-json", "tick": 60000 } diff --git a/read.coffee b/read.coffee index fc58da2..ca2da8d 100644 --- a/read.coffee +++ b/read.coffee @@ -1,70 +1,74 @@ -imap = require "imap" -mailparser = require "mailparser" -request = require "request" - -fs = require "fs" -config = JSON.parse fs.readFileSync "#{process.cwd()}/config.json", "utf-8" - -server = new imap.ImapConnection - username: config.username - password: config.password - host: config.imap.host - port: config.imap.port - secure: config.imap.secure - -exitOnErr = (err) -> - console.log "Error!" - console.error err - -post_me = (json, callback) -> - request.post - url: config.post_url - json: json - , callback - -on_message = (message) -> - parser = new mailparser.MailParser() - - parser.on "end", (mail) -> - post_me(mail, () -> console.log('posted!')) - - message.on "data", (data) -> - parser.write data.toString() - parser.end() - -do_connect = () -> - server.connect (err) -> - exitOnErr err if err - - server.openBox "INBOX", false, (err, box) -> - server.search ["UNSEEN"], (err, results) -> - exitOnErr(err) if err - - unless results.length - console.log "No unread messages" - server.logout() - - setTimeout(() -> - do_connect() - , config.tick) - - return - - fetch = server.fetch results, - request: - body: "full" - headers: false - - fetch.on "message", (message) -> - on_message(message) - - server.addFlags results, 'Seen' - - fetch.on "end", -> - server.logout() - - setTimeout(() -> - do_connect() - , config.tick) - -do_connect() \ No newline at end of file +imap = require "imap" +mailparser = require "mailparser" +request = require "request" +fs = require "fs" +emitter = new(require('events').EventEmitter) + +fs.readFile "#{process.cwd()}/config.json", "utf-8", (err, data) -> + config = JSON.parse data + emitter.emit '/config/read', config + +emitter.on '/config/read',(config) -> + server = new imap.ImapConnection + username: config.username + password: config.password + host: config.imap.host + port: config.imap.port + secure: config.imap.secure + + exitOnErr = (err) -> + console.log "Error!" + console.error err + + post_me = (json, callback) -> + request.post + url: config.post_url + json: json + , callback + + on_message = (message) -> + parser = new mailparser.MailParser() + + parser.on "end", (mail) -> + post_me mail, (err, resp, res) -> + console.log('posted!') + + message.on "data", (data) -> + parser.write data.toString() + parser.end() + + do_connect = () -> + server.connect (err) -> + exitOnErr err if err + server.openBox "INBOX", false, (err, box) -> + server.search ["UNSEEN"], (err, results) -> + exitOnErr(err) if err + results = [results[0]] + unless results.length + console.log "No unread messages" + server.logout() + + setTimeout(() -> + do_connect() + , config.tick) + + return + + fetch = server.fetch results, + request: + body: "full" + headers: false + + fetch.on "message", (message) -> + on_message(message) + + server.addFlags results, 'Seen' + + fetch.on "end", -> + server.logout() + + setTimeout(() -> + do_connect() + , config.tick) + + do_connect()