import logging
import requests
import urllib3

# Session de requêtage HTTP
session = requests.Session()

# Objet pour afficher le journal d’exécution
logger = logging.getLogger('fetch.http')


class RetryAdapter(requests.adapters.HTTPAdapter):
    """
    Adapteur de requêtes réessayant les requêtes échouées avec
    un délai adaptatif.
    """
    def __init__(self):
        # Réessaie jusqu’à dix fois la récupération de chaque page, en
        # augmentant progressivement le délai entre chaque essai
        retry = urllib3.util.Retry(total=10, backoff_factor=0.3)
        super(RetryAdapter, self).__init__(max_retries=retry)

    def send(
        self, request, stream=False, timeout=None, verify=True,
        cert=None, proxies=None
    ):
        logger.debug('{} {}'.format(request.method, request.url))
        return super(RetryAdapter, self).send(
            request, stream=stream, timeout=timeout,
            verify=verify, cert=cert, proxies=proxies
        )


adapter = RetryAdapter()
session.mount('http://', adapter)
session.mount('https://', adapter)

# Identification du robot
session.headers['User-Agent'] = (
    'WikimedicaDiseaseSearch/0.1 '
    '(https://gitlab.com/matteodelabre/wikimedica-disease-search)'
)
