Source code for hauberk.filters
import logging
import re
from datetime import datetime, timedelta
logger = logging.getLogger(__name__)
[docs]class Age():
def __init__(self, days):
self.days = days
def __call__(self, message):
expire_date = message.date + timedelta(days=self.days)
now = datetime.now()
if expire_date < now:
return True
return False
def __repr__(self): # pragma: no cover
return "{}: Days={}".format(self.__class__.__name__, self.days)
[docs]class Subject():
def __init__(self, regex):
self.regex = regex
self.compiled = re.compile(regex, flags=re.IGNORECASE)
def __call__(self, message):
if self.compiled.search(message.subject):
return True
return False
def __repr__(self): # pragma: no cover
return "{}: Regex={}".format(self.__class__.__name__, self.regex)
[docs]class Body():
def __init__(self, regex):
self.regex = regex
self.compiled = re.compile(regex, flags=re.IGNORECASE)
def __call__(self, message):
if self.compiled.search(message.body):
return True
return False
def __repr__(self): # pragma: no cover
return "{}: Regex={}".format(self.__class__.__name__, self.regex)
[docs]class From():
def __init__(self, regex):
self.regex = regex
self.compiled = re.compile(regex, flags=re.IGNORECASE)
def __call__(self, message):
for address in message.from_:
email = str(address)
if self.compiled.search(email):
return True
return False
def __repr__(self): # pragma: no cover
return "{}: Regex={}".format(self.__class__.__name__, self.regex)