]> git.cworth.org Git - sup/blob - lib/sup/sent.rb
skip system buffers when rolling
[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     self.class.i_am_the_instance self
12     Redwood::log "SentManager intialized with source uri: #@source_uri"
13   end
14
15   def source_id; @source.id; end
16
17   def source= s
18     raise FatalSourceError.new("Configured sent_source [#{s.uri}] can't store mail.  Correct your configuration.") unless s.respond_to? :store_message
19     @souce_uri = s.uri
20     @source = s
21   end
22
23   def default_source
24     @source = Recoverable.new SentLoader.new
25     Redwood::log "SentManager initializing default source: #@source."
26     @source_uri = @source.uri
27     @source
28   end
29
30   def write_sent_message date, from_email, &block
31     @source.store_message date, from_email, &block
32
33     PollManager.add_messages_from(@source) do |m_old, m, offset|
34       m.remove_label :unread
35       m
36     end
37   end
38 end
39
40 class SentLoader < MBox::Loader
41   yaml_properties :cur_offset
42
43   def initialize cur_offset=0
44     @filename = Redwood::SENT_FN
45     File.open(@filename, "w") { } unless File.exists? @filename
46     super "mbox://" + @filename, cur_offset, true, true
47   end
48
49   def file_path; @filename end
50
51   def to_s; 'sup://sent'; end
52   def uri; 'sup://sent' end
53
54   def id; 9998; end
55   def labels; [:inbox]; end
56 end
57
58 end