import imaplib
import re

from imaplib_connect import open_connection

list_response_pattern = re.compile(r'\((?P<flags>.*?)\) "(?P<delimiter>.*)" (?P<name>.*)')
pattern_uid = re.compile('\d+ \(UID (?P<uid>\d+)\)')

def parse_list_response(line):
    flags = ""
    delimiter = ""
    mailbox_name = "" 
    try:
	data_get = list_response_pattern.match(line)
	print "data_get ",data_get
	if data_get:
		flags, delimiter, mailbox_name = data_get.groups()
    except Exception as e:
	print "Eccezione: ",e
	try:
		print "Prova utilizzando un parser diverso"
		list_response_pattern_tmp = re.compile(r'\((?P<flags>.*?)\) "(?\/)" (?P<name>.*)')
		flags, delimiter, mailbox_name = list_response_pattern_tmp.match(line).groups()
		print "mailbox_name: ",mailbox_name
	except Exception as e:
		print e
    mailbox_name = mailbox_name.strip('"')
    return (flags, delimiter, mailbox_name)

def parse_uid(data):
    match = pattern_uid.match(data)
    return match.group('uid')

if __name__ == '__main__':
    c = open_connection()
    try:
        typ, data = c.list()
    finally:
        c.logout()
    print 'Response code:', typ

    for line in data:
        print 'Server response:', line
        flags, delimiter, mailbox_name = parse_list_response(line)
        print 'Parsed response:', (flags, delimiter, mailbox_name)
