Source code for src.share_kernel.domain.value_objects.email
from dataclasses import dataclass
from src.share_kernel.domain.base_value_object import ValueObject
from src.share_kernel.domain.exceptions import InvalidValueObjectException
from src.share_kernel.utils.validators import is_valid_email
[docs]
@dataclass(frozen=True)
class Email(ValueObject):
value: str
def __post_init__(self):
# Normalisation avant validation
object.__setattr__(self, "value", self.value.strip().lower())
super().__post_init__()
def _validate(self):
if not is_valid_email(self.value):
raise InvalidValueObjectException(f"Email invalide : '{self.value}'")
@property
def domain(self) -> str:
return self.value.split("@")[1]
def __str__(self) -> str:
return self.value