pypilot/app/query_normalisation.py
2023-06-04 11:52:10 +01:00

34 lines
922 B
Python

#!/usr/bin/env python3
"""MODULE: Provides functions that ensure an IP address is
available to query the APIs for."""
import ipaddress
import socket
import requests
def is_ip_address(query: str) -> bool:
"""Verifies if a given query is a valid IPv4 address."""
try:
ipaddress.ip_address(query)
return True
except ValueError:
return False
def resolve_domain_name(domain_name: str) -> ipaddress.IPv4Address | None:
"""Resolve a domain name via DNS or return None."""
try:
ip_address: ipaddress.IPv4Address = ipaddress.IPv4Address(socket.gethostbyname(domain_name))
except socket.gaierror:
ip_address = None
return ip_address
def get_public_ip() -> ipaddress.IPv4Address:
"""Get the user's current public IPv4 address."""
ip_address: str = requests.get("https://api.ipify.org", timeout=10).text
return ipaddress.IPv4Address(ip_address)