]> git.cworth.org Git - sup/blob - lib/sup/sent.rb
9203dd666816a770d8537c18c6281ae8f17ed14a
[sup] / lib / sup / sent.rb
1 module Redwood
2
3 class SentManager
4   include 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     @souce_uri = s.uri
18     @source = s
19   end
20
21   def default_source
22     @source = Recoverable.new SentLoader.new
23     @source_uri = @source.uri
24     @source
25   end
26
27   def write_sent_message date, from_email, &block
28     @source.store_message date, from_email, &block
29
30     PollManager.each_message_from(@source) do |m|
31       m.remove_label :unread
32       PollManager.add_new_message m
33     end
34   end
35 end
36
37 class SentLoader < MBox::Loader
38   yaml_properties :cur_offset
39
40   def initialize cur_offset=0
41     @filename = Redwood::SENT_FN
42     File.open(@filename, "w") { } unless File.exists? @filename
43     super "mbox://" + @filename, cur_offset, true, true
44   end
45
46   def file_path; @filename end
47
48   def to_s; 'sup://sent'; end
49   def uri; 'sup://sent' end
50
51   def id; 9998; end
52   def labels; [:inbox, :sent]; end
53 end
54
55 end