lib/sup/sent.rb (1242B) - raw
1 module Redwood
2
3 class SentManager
4 include Redwood::Singleton
5
6 attr_reader :source, :source_uri
7
8 def initialize source_uri
9 @source = nil
10 @source_uri = source_uri
11 end
12
13 def source_id; @source.id; end
14
15 def source= s
16 raise FatalSourceError.new("Configured sent_source [#{s.uri}] can't store mail. Correct your configuration.") unless s.respond_to? :store_message
17 @source_uri = s.uri
18 @source = s
19 end
20
21 def default_source
22 @source = SentLoader.new
23 @source_uri = @source.uri
24 @source
25 end
26
27 def write_sent_message date, from_email, &block
28 ::Thread.new do
29 debug "store the sent message (locking sent source..)"
30 @source.synchronize do
31 @source.store_message date, from_email, &block
32 end
33 PollManager.poll_from @source
34 end
35 end
36 end
37
38 class SentLoader < MBox
39 yaml_properties
40
41 def initialize
42 @filename = Redwood::SENT_FN
43 File.open(@filename, "w") { } unless File.exist? @filename
44 super "mbox://" + @filename, true, $config[:archive_sent]
45 end
46
47 def file_path; @filename end
48
49 def to_s; 'sup://sent'; end
50 def uri; 'sup://sent' end
51
52 def id; 9998; end
53 def labels; [:inbox, :sent]; end
54 def default_labels; []; end
55 def read?; true; end
56 end
57
58 end