Fix style
This commit is contained in:
parent
653c0334bc
commit
dde9273dc1
1 changed files with 35 additions and 26 deletions
|
@ -8,38 +8,47 @@
|
|||
import sys
|
||||
import os
|
||||
import logging
|
||||
import click
|
||||
import click_config_file
|
||||
from logging.handlers import SysLogHandler
|
||||
import imaplib
|
||||
import re
|
||||
import json
|
||||
from operator import itemgetter, attrgetter
|
||||
import click
|
||||
import click_config_file
|
||||
|
||||
class Mailbox:
|
||||
'''Class defining an IMAP mailbox'''
|
||||
def __init__(self, name, count, children):
|
||||
self.name = name
|
||||
self.count = count
|
||||
self.children = children
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.name} {self.count} messages and {len(self.children)} children mailboxes"
|
||||
|
||||
def toJSON(self):
|
||||
def to_json(self):
|
||||
'''Convert mailbox object to JSON data'''
|
||||
return json.dumps(self, default=lambda o: o.__dict__,
|
||||
sort_keys=True, indent=4)
|
||||
|
||||
def __repr__(self):
|
||||
return repr((self.name, self.count, self.children))
|
||||
|
||||
class list_imap_messages:
|
||||
|
||||
class ListImapMessages:
|
||||
'''Class to list IMAP messages'''
|
||||
def __init__(self, debug_level, log_file, **kwargs):
|
||||
''' Initial function called when object is created '''
|
||||
self.config = dict()
|
||||
self.config = {}
|
||||
self.config['debug_level'] = debug_level
|
||||
if log_file is None:
|
||||
log_file = os.path.join(os.environ.get('HOME', os.environ.get('USERPROFILE', os.getcwd())), 'log', 'list_imap_messages.log')
|
||||
log_file = os.path.join(
|
||||
os.environ.get(
|
||||
'HOME',
|
||||
os.environ.get(
|
||||
'USERPROFILE',
|
||||
os.getcwd()
|
||||
)
|
||||
),
|
||||
'log', 'list_imap_messages.log'
|
||||
)
|
||||
self.config['log_file'] = log_file
|
||||
self.config.update(kwargs)
|
||||
self._init_log()
|
||||
|
@ -52,21 +61,21 @@ class list_imap_messages:
|
|||
self._list_mailboxes()
|
||||
|
||||
def _list_mailboxes(self):
|
||||
self._log.debug(f"Listing mailboxes in '{self.config['mailbox']}'")
|
||||
self._log.debug("Listing mailboxes in '%s'", self.config['mailbox'])
|
||||
result_list = self.imap.list()
|
||||
if result_list[0] == 'NO':
|
||||
self._log.error(f"Error listing mailboxes in {self.config['mailbox']}: {result_list[1]}")
|
||||
self._log.error("Error listing mailboxes in %s: %s", self.config['mailbox'], result_list[1])
|
||||
self.imap.close()
|
||||
self.imap.logout()
|
||||
sys.exit(1)
|
||||
else:
|
||||
self._log.debug(f"Result: {result_list}")
|
||||
self._log.debug("Result: %s", result_list)
|
||||
mailboxes = list()
|
||||
for raw_mailbox in result_list[1]:
|
||||
self._log.debug(raw_mailbox)
|
||||
mailbox_list = raw_mailbox.decode().split(' "/" ')
|
||||
result = self._select_mailbox(mailbox_list[1])
|
||||
self._log.debug(f"Selecting mailbox '{mailbox_list[1]}', result: {result}")
|
||||
self._log.debug("Selecting mailbox '%s', result: %s", mailbox_list[1], result)
|
||||
# result_list = self.imap.list(mailbox_list[1])[1]
|
||||
# self._log.debug(f"Listing mailboxes in '{mailbox_list[1]}', result: {result_list}")
|
||||
# if len(result_list) > 1:
|
||||
|
@ -100,46 +109,46 @@ class list_imap_messages:
|
|||
|
||||
def _select_mailbox(self, mailbox):
|
||||
try:
|
||||
self._log.debug(f"Selecting mailbox '{self.config['username']}@{self.config['server']}:{self.config['port']}/{mailbox}'")
|
||||
self._log.debug("Selecting mailbox '%s@%s:%s/%s'", self.config['username'], self.config['server'], self.config['port'], mailbox)
|
||||
result=self.imap.select(mailbox, True)
|
||||
except imaplib.IMAP4.error as error:
|
||||
self._log.error(f"Error selecting mailbox '{self.config['username']}@{self.config['server']}:{self.config['port']}/{mailbox}': {error}")
|
||||
self._log.error("Error selecting mailbox '%s@%s:%s/%s': %s", self.config['username'], self.config['server'], self.config['port'], mailbox, error)
|
||||
self.imap.close()
|
||||
self.imap.logout()
|
||||
sys.exit(1)
|
||||
if result[0] == 'NO':
|
||||
self._log.error(f"Error selecting mailbox '{self.config['username']}@{self.config['server']}:{self.config['port']}/{mailbox}': {result[1]}")
|
||||
self._log.error("Error selecting mailbox '%s@%s:%s/%s': %s", self.config['username'], self.config['server'], self.config['port'], mailbox, result[1])
|
||||
self.imap.close()
|
||||
self.imap.logout()
|
||||
sys.exit(1)
|
||||
else:
|
||||
self._log.debug(f"Result: {result}")
|
||||
self._log.debug("Result: %s", result)
|
||||
return result
|
||||
|
||||
def _login(self):
|
||||
try:
|
||||
self._log.debug(f"Login as '{self.config['username']}@{self.config['server']}:{self.config['port']}'")
|
||||
self._log.debug("Login as '%s@%s:%s'...", self.config['username'], self.config['server'], self.config['port'])
|
||||
self.imap.login(self.config['username'], self.config['password'])
|
||||
#except imaplib.IMAP4.error as error:
|
||||
except Exception as error:
|
||||
self._log.error(f"Error login as '{self.config['username']}@{self.config['server']}:{self.config['port']}': {error}")
|
||||
self._log.error("Error login as '%s@%s:%s': %s", self.config['username'], self.config['server'], self.config['port'], error)
|
||||
self.imap.logout()
|
||||
sys.exit(1)
|
||||
|
||||
def _connect_ssl(self):
|
||||
try:
|
||||
self._log.debug(f"Connecting to '{self.config['server']}:{self.config['port']}/SSL'")
|
||||
self._log.debug("Connecting to '%s:%s/SSL'...", self.config['server'], self.config['port'])
|
||||
self.imap=imaplib.IMAP4_SSL(self.config['server'], self.config['port'])
|
||||
except Exception as error:
|
||||
self._log.error(f"Error connecting to '{self.config['server']}:{self.config['port']}': {error}")
|
||||
self._log.error("Error connecting to '%s:%s': %s", self.config['server'], self.config['port'], error)
|
||||
sys.exit(1)
|
||||
|
||||
def _connect(self):
|
||||
try:
|
||||
self._log.debug(f"Connecting to '{self.config['server']}:{self.config['port']}/noSSL'")
|
||||
self._log.debug("Connecting to '%s:%s/noSSL'...", self.config['server'], self.config['port'])
|
||||
self.imap=imaplib.IMAP4(self.config['server'], self.config['port'])
|
||||
except Exception as error:
|
||||
self._log.error(f"Error connecting to '{self.config['server']}:{self.config['port']}': {error}")
|
||||
self._log.error("Error connecting to '%s:%s': %s", self.config['server'], self.config['port'], error)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
|
@ -189,8 +198,8 @@ class list_imap_messages:
|
|||
@click.option("--mailbox","-m", default='INBOX', help="Mailbox to start examination.")
|
||||
@click.option("--only-empty", "-e", is_flag=True, default=False, help='List only empty folder')
|
||||
@click_config_file.configuration_option()
|
||||
def __main__(debug_level, log_file, **kwargs):
|
||||
return list_imap_messages(debug_level, log_file, **kwargs)
|
||||
def __main__(debug_level='INFO', log_file=None, **kwargs):
|
||||
return ListImapMessages(debug_level, log_file, **kwargs)
|
||||
|
||||
if __name__ == "__main__":
|
||||
__main__()
|
||||
|
|
Loading…
Reference in a new issue