Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
setup package.json, wrote a test to try it out, changed readSync to read
  • Loading branch information
jamescarr committed Mar 6, 2012
1 parent e8c1fc8 commit 8855f04
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 72 deletions.
2 changes: 2 additions & 0 deletions .gitignore
@@ -1 +1,3 @@
config.json
node_modules

3 changes: 1 addition & 2 deletions config.json.example
Expand Up @@ -9,8 +9,7 @@
"smtp": {
"host": "smtp.gmail.com",
"ssl": true
}

},
"post_url": "http://example.com/POST-json",
"tick": 60000
}
144 changes: 74 additions & 70 deletions 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()
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()

0 comments on commit 8855f04

Please sign in to comment.