Added domain validation

Modify Pydantic Models
This commit is contained in:
Night Owl
2025-03-19 23:01:19 +03:30
committed by GitHub
parent 552b0ab7ca
commit 5f28aa9d90
2 changed files with 38 additions and 35 deletions

View File

@ -1,11 +1,24 @@
from pydantic import BaseModel
from ipaddress import IPv4Address, IPv6Address
from pydantic import BaseModel, field_validator, ValidationInfo
from ipaddress import IPv4Address, IPv6Address, ip_address
import socket
class StatusResponse(BaseModel):
ipv4: IPv4Address | None = None
ipv6: IPv6Address | None = None
ipv4: str | None = None
ipv6: str | None = None
@field_validator('ipv4', 'ipv6', mode='before')
def check_ip_or_domain(cls, v: str, info: ValidationInfo):
if v is None:
return v
try:
ip_address(v)
return v
except ValueError:
try:
socket.getaddrinfo(v, None)
return v
except socket.gaierror:
raise ValueError(f"'{v}' is not a valid IPv4 or IPv6 address or domain name")
class EditInputBody(StatusResponse):
pass
pass