Only mark a message as read after we have validated the email reply
[rails.git] / script / deliver-message
1 #!/usr/bin/env ruby
2
3 require File.dirname(__FILE__) + '/../config/environment'
4
5 exit 0 unless recipient = ARGV[0].match(/^([cm])-(\d+)-(.*)$/)
6
7 if recipient[1] == "c"
8   comment = DiaryComment.find(recipient[2])
9   digest = comment.digest
10   from = comment.diary_entry.user
11   to = comment.user
12 else
13   message = Message.find(recipient[2])
14   digest = message.digest
15   from = message.recipient
16   to = message.sender
17 end
18
19 exit 0 unless recipient[3] == digest[0,6]
20
21 message.update_attribute(:message_read, true) if message
22
23 mail = Mail.new(STDIN.readlines.join)
24
25 if mail.multipart?
26   body = mail.html_part || mail.text_part
27 else
28   body = mail
29 end
30
31 message = Message.new({
32   :sender => from,
33   :recipient => to,
34   :sent_on => mail.date.new_offset(0),
35   :title => mail.subject.sub(/\[OpenStreetMap\] */, ""),
36   :body => body.decoded
37 }, :without_protection => true)
38 message.save!
39
40 Notifier.message_notification(message).deliver
41
42 exit 0