"""Path descriptors to different mail hosting-related directories"""


class MailHostingPath(object):
    """Base class for all web hosting-related paths"""
    pass


class MailAbsolutePath(MailHostingPath):
    def __init__(self, path):
        self._path = path

    @property
    def path(self):
        return self._path


class MailboxDirectory(MailHostingPath):
    """Path to mailbox mail directory"""
    def __init__(self, mailbox_name):
        self.mailbox_name = mailbox_name

    def __str__(self):
        return self.mailbox_name


class MailDomainDirectory(MailHostingPath):
    """Path to whole domain mail directory"""
    pass


class MailboxMaildirDirectory(MailHostingPath):
    """Path to 'Maildir' directory of mailbox"""
    def __init__(self, mailbox_name):
        self._mailbox_name = mailbox_name

    @property
    def mailbox_name(self):
        return self._mailbox_name


class MailboxTemplatePath(MailHostingPath):
    def __init__(self, mailbox_name, template):
        self._mailbox_name = mailbox_name
        self._template = template

    @property
    def mailbox_name(self):
        return self._mailbox_name

    @property
    def template(self):
        return self._template
