diff options
Diffstat (limited to 'email_assistant/assistant.py')
-rw-r--r-- | email_assistant/assistant.py | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/email_assistant/assistant.py b/email_assistant/assistant.py index a784077..d39b016 100644 --- a/email_assistant/assistant.py +++ b/email_assistant/assistant.py | |||
@@ -37,7 +37,7 @@ from email_assistant import plugins | |||
37 | # Number of days to look backwards when scanning a mailbox for the first time: | 37 | # Number of days to look backwards when scanning a mailbox for the first time: |
38 | IMAP_BACKFILL = 180 | 38 | IMAP_BACKFILL = 180 |
39 | 39 | ||
40 | class Mailbox: | 40 | class IMAPMailbox: |
41 | def __init__(self, name, host, username, password, folders): | 41 | def __init__(self, name, host, username, password, folders): |
42 | self.log = logging.getLogger('assistant.mailbox') | 42 | self.log = logging.getLogger('assistant.mailbox') |
43 | self.name = name | 43 | self.name = name |
@@ -85,6 +85,21 @@ class Mailbox: | |||
85 | with open(self.state_file, 'w') as f: | 85 | with open(self.state_file, 'w') as f: |
86 | json.dump(self.uidinfo, f) | 86 | json.dump(self.uidinfo, f) |
87 | 87 | ||
88 | class DirMailbox: | ||
89 | def __init__(self, name, directory): | ||
90 | self.log = logging.getLogger('assistant.mailbox') | ||
91 | self.name = name | ||
92 | self.directory = directory | ||
93 | |||
94 | def get_messages(self): | ||
95 | for fn in os.listdir(self.directory): | ||
96 | with open(os.path.join(self.directory, fn), 'rb') as f: | ||
97 | msg = f.read() | ||
98 | yield msg | ||
99 | |||
100 | def save(self): | ||
101 | pass | ||
102 | |||
88 | class Calendar: | 103 | class Calendar: |
89 | def __init__(self, url, username, password, calendar): | 104 | def __init__(self, url, username, password, calendar): |
90 | self.log = logging.getLogger('assistant.calendar') | 105 | self.log = logging.getLogger('assistant.calendar') |
@@ -116,7 +131,7 @@ class Calendar: | |||
116 | 131 | ||
117 | class Assistant: | 132 | class Assistant: |
118 | def __init__(self): | 133 | def __init__(self): |
119 | self.log = logging.getLogger('main') | 134 | self.log = logging.getLogger('assistant.main') |
120 | self.geolocator = None | 135 | self.geolocator = None |
121 | self.tzfinder = None | 136 | self.tzfinder = None |
122 | self.plugins = [] | 137 | self.plugins = [] |
@@ -151,12 +166,17 @@ class Assistant: | |||
151 | for section in config.sections(): | 166 | for section in config.sections(): |
152 | if section.startswith('mailbox '): | 167 | if section.startswith('mailbox '): |
153 | name = section.split()[1] | 168 | name = section.split()[1] |
154 | mailboxes[name] = Mailbox( | 169 | if config[section]['type'].lower() == 'imap': |
155 | name, | 170 | mailboxes[name] = IMAPMailbox( |
156 | config[section]['host'], | 171 | name, |
157 | config[section]['username'], | 172 | config[section]['host'], |
158 | config[section]['password'], | 173 | config[section]['username'], |
159 | config[section]['folders'].split(',')) | 174 | config[section]['password'], |
175 | config[section]['folders'].split(',')) | ||
176 | elif config[section]['type'].lower() == 'dir': | ||
177 | mailboxes[name] = DirMailbox( | ||
178 | name, | ||
179 | config[section]['path']) | ||
160 | elif section.startswith('calendar '): | 180 | elif section.startswith('calendar '): |
161 | name = section.split()[1] | 181 | name = section.split()[1] |
162 | calendars[name] = Calendar( | 182 | calendars[name] = Calendar( |