"""Resolve :class:`PortalHost` origins from external constants.These helpers keep hostnames centralized for :class:`PortalMetadata`validation and portal-entry assembly rather than embedding AEAT domains inindividual catalogue entries."""from__future__importannotationsfromurllib.parseimporturlsplitfrom...core.configimportSettingsfrom._categoriesimportPortalHostfrom._errorsimportPortalValidationError
[docs]defportal_host_origin(subdomain:PortalHost)->str:"""Return the configured HTTPS origin for a :class:`PortalHost`."""domains=Settings.external_constants().aeat.domainsifsubdomainisPortalHost.SEDE:returndomains.sedeifsubdomainisPortalHost.WWW1:returndomains.www1ifsubdomainisPortalHost.WWW2:returndomains.www2ifsubdomainisPortalHost.WWW3:returndomains.www3ifsubdomainisPortalHost.AGENCIATRIBUTARIA_GOB:returndomains.aeat_gobifsubdomainisPortalHost.AGENCIATRIBUTARIA_ES:returndomains.legacy_wwwifsubdomainisPortalHost.CLAVE_GOB:returndomains.claveraisePortalValidationError(f"unsupported AEAT portal subdomain {subdomain!r}")
[docs]defportal_host_name(subdomain:PortalHost)->str:"""Return the configured hostname for a :class:`PortalHost`."""host=urlsplit(portal_host_origin(subdomain)).netlocifnothost:raisePortalValidationError(f"configured portal origin for {subdomain!r} has no host")returnhost