Files

66 lines
2.2 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
from backports.functools_lru_cache import lru_cache
import logging
import socket
__author__ = u'Artur Barseghyan'
__copyright__ = u'2013-2019 Artur Barseghyan'
__license__ = u'MPL-1.1 OR GPL-2.0-only OR LGPL-2.1-or-later'
__all__ = (u'internet_available_only', u'log_info')
LOG_INFO = True
LOGGER = logging.getLogger(__name__)
def log_info(func):
u'Log some useful info.'
if (not LOG_INFO):
return func
def inner(self, *args, **kwargs):
u'Inner.'
result = func(*([self] + list(args)), **kwargs)
LOGGER.debug(u'\n\n%s', func.__name__)
LOGGER.debug(u'============================')
if func.__doc__:
LOGGER.debug(u'""" %s """', func.__doc__.strip())
LOGGER.debug(u'----------------------------')
if (result is not None):
LOGGER.debug(result)
LOGGER.debug(u'\n++++++++++++++++++++++++++++')
return result
return inner
@lru_cache(maxsize=32)
def is_internet_available(host='8.8.8.8', port=53, timeout=3):
u'Check if internet is available.\n\n Host: 8.8.8.8 (google-public-dns-a.google.com)\n OpenPort: 53/tcp\n Service: domain (DNS/TCP)\n '
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):
u'Inner.'
if (not is_internet_available()):
LOGGER.debug(u'\n\n%s', func.__name__)
LOGGER.debug(u'============================')
if func.__doc__:
LOGGER.debug(u'""" %s """', func.__doc__.strip())
LOGGER.debug(u'----------------------------')
LOGGER.debug(u'Skipping because no Internet connection available.')
LOGGER.debug(u'\n++++++++++++++++++++++++++++')
return None
result = func(*([self] + list(args)), **kwargs)
return result
return inner