from dataclasses import dataclass from anydi import singleton from fansifter_common.identifiers.types import ProfileToken from fansifter_common.legal_info.services import LegalInfoService from preference_center.profile.models import Profile from preference_center.profile.requests import IPCountryRequest from preference_center.profile.services import ProfileService @dataclass class GetProfileRequest(IPCountryRequest): token: ProfileToken @singleton class GetProfileHandler: def __init__( self, profile_service: ProfileService, legal_info_service: LegalInfoService, ) -> None: self.profile_service = profile_service self.legal_info_service = legal_info_service def handle(self, request: GetProfileRequest) -> Profile: identifier = self.profile_service.decode_profile_identifier(request.token) profile = self.profile_service.get_profile_by_identifier_cached(identifier) # Determine whether the country allows collecting date of birth is_date_of_birth_allowed = self.legal_info_service.is_date_of_birth_allowed( request.ip_country ) if not is_date_of_birth_allowed: profile.date_of_birth = None return profile