1.1 --- a/imiptools/__init__.py Mon May 18 15:08:29 2015 +0200
1.2 +++ b/imiptools/__init__.py Mon May 18 17:13:46 2015 +0200
1.3 @@ -55,6 +55,9 @@
1.4 self.handlers = handlers
1.5 self.messenger = messenger or Messenger()
1.6 self.lmtp_socket = None
1.7 + self.store_dir = None
1.8 + self.publishing_dir = None
1.9 + self.debug = False
1.10
1.11 def process(self, f, original_recipients, outgoing_only):
1.12
1.13 @@ -91,7 +94,11 @@
1.14 may be constructed according to individual preferences.
1.15 """
1.16
1.17 - handlers = dict([(name, cls(senders, recipient, self.messenger)) for name, cls in self.handlers])
1.18 + store = self.store_dir and imip_store.FileStore(self.store_dir) or None
1.19 + publisher = self.publishing_dir and imip_store.FilePublisher(self.publishing_dir) or None
1.20 +
1.21 + handlers = dict([(name, cls(senders, recipient, self.messenger, store, publisher))
1.22 + for name, cls in self.handlers])
1.23 handled = False
1.24
1.25 for part in msg.walk():
1.26 @@ -143,7 +150,7 @@
1.27 if fb: parts.append(fb)
1.28 message = self.messenger.make_outgoing_message(parts, [outgoing_recipient])
1.29
1.30 - if "-d" in sys.argv:
1.31 + if self.debug:
1.32 print >>sys.stderr, "Outgoing parts for %s..." % outgoing_recipient
1.33 print message
1.34 else:
1.35 @@ -174,7 +181,7 @@
1.36 messages = [self.messenger.wrap_message(msg, forwarded_parts)]
1.37
1.38 for message in messages:
1.39 - if "-d" in sys.argv:
1.40 + if self.debug:
1.41 print >>sys.stderr, "Forwarded parts..."
1.42 print message
1.43 elif self.lmtp_socket:
1.44 @@ -183,7 +190,7 @@
1.45 # Unhandled messages are delivered as they are.
1.46
1.47 if not handled:
1.48 - if "-d" in sys.argv:
1.49 + if self.debug:
1.50 print >>sys.stderr, "Unhandled parts..."
1.51 print msg
1.52 elif self.lmtp_socket:
1.53 @@ -238,6 +245,8 @@
1.54 recipients = []
1.55 senders = []
1.56 lmtp = []
1.57 + store_dir = []
1.58 + publishing_dir = []
1.59 outgoing_only = False
1.60
1.61 l = []
1.62 @@ -264,15 +273,27 @@
1.63 elif arg == "-l":
1.64 l = lmtp
1.65
1.66 + # Switch to getting the store directory.
1.67 +
1.68 + elif arg == "-S":
1.69 + l = store_dir
1.70 +
1.71 + # Switch to getting the publishing directory.
1.72 +
1.73 + elif arg == "-P":
1.74 + l = publishing_dir
1.75 +
1.76 # Ignore debugging options.
1.77
1.78 elif arg == "-d":
1.79 - pass
1.80 + self.debug = True
1.81 else:
1.82 l.append(arg)
1.83
1.84 self.messenger.sender = senders and senders[0] or self.messenger.sender
1.85 self.lmtp_socket = lmtp and lmtp[0] or None
1.86 + self.store_dir = store_dir and store_dir[0] or None
1.87 + self.publishing_dir = publishing_dir and publishing_dir[0] or None
1.88 self.process(stream, original_recipients, outgoing_only)
1.89
1.90 def __call__(self):