Files
bazarr/libs/tld/tests/base.py
2026-03-17 21:30:35 -04:00

49 lines
1.4 KiB
Python

# -*- coding: utf-8 -*-
import logging
import socket
from functools import lru_cache
__author__ = "Artur Barseghyan"
__copyright__ = "2013-2026 Artur Barseghyan"
__license__ = "MPL-1.1 OR GPL-2.0-only OR LGPL-2.1-or-later"
__all__ = ("internet_available_only",)
LOGGER = logging.getLogger(__name__)
@lru_cache(maxsize=32)
def is_internet_available(host="8.8.8.8", port=53, timeout=3):
"""Check if internet is available.
Host: 8.8.8.8 (google-public-dns-a.google.com)
OpenPort: 53/tcp
Service: domain (DNS/TCP)
"""
try:
socket.setdefaulttimeout(timeout)
socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((host, port))
return True
except socket.error as ex:
print(ex)
return False
def internet_available_only(func):
def inner(self, *args, **kwargs):
"""Inner."""
if not is_internet_available():
LOGGER.debug("\n\n%s", func.__name__)
LOGGER.debug("============================")
if func.__doc__:
LOGGER.debug('""" %s """', func.__doc__.strip())
LOGGER.debug("----------------------------")
LOGGER.debug("Skipping because no Internet connection available.")
LOGGER.debug("\n++++++++++++++++++++++++++++")
return None
result = func(self, *args, **kwargs)
return result
return inner