pypilot/app/query_normalisation.py

30 lines
732 B
Python
Raw Normal View History

2022-06-25 20:28:57 +01:00
#!/usr/bin/env python3
2022-06-25 20:50:11 +01:00
import socket
2022-06-25 20:28:57 +01:00
import ipaddress
import requests
def is_ip_address(query: str) -> bool:
2022-06-25 20:39:00 +01:00
"""Verifies if a given query is a valid IPv4 address."""
2022-06-25 20:28:57 +01:00
try:
ipaddress.ip_address(query)
return True
except ValueError:
return False
def resolve_domain_name(domain_name: str) -> ipaddress.IPv4Address:
2022-06-25 20:39:00 +01:00
"""Resolve a domain name via DNS or return None."""
2022-06-25 20:28:57 +01:00
try:
2022-06-25 20:50:11 +01:00
ip_address = socket.gethostbyname(domain_name)
2022-06-25 20:28:57 +01:00
except socket.gaierror:
2022-06-25 20:50:11 +01:00
ip_address = None
return ip_address
2022-06-25 20:28:57 +01:00
def get_public_ip() -> ipaddress.IPv4Address:
2022-06-25 20:39:00 +01:00
"""Get the user's current public IPv4 address."""
2022-06-25 20:50:11 +01:00
ip_address = requests.get("https://api.ipify.org").text
return ip_address