Source code for darc.proxy
# -*- coding: utf-8 -*-
"""Proxy Utilities
=====================
The :mod:`darc.proxy` module provides various proxy support
to the :mod:`darc` project.
"""
import collections
import darc.typing as typing
from darc.requests import i2p_session, null_session, tor_session
from darc.selenium import i2p_driver, null_driver, tor_driver
# link proxy mapping
LINK_MAP: typing.LinkMap = collections.defaultdict(
lambda: (null_session, null_driver),
dict(
tor=(tor_session, tor_driver),
i2p=(i2p_session, i2p_driver),
)
)
def register(proxy: str, session: typing.Callable[[bool], typing.Session] = null_session,
driver: typing.Callable[[], typing.Driver] = null_driver):
"""Register new proxy type.
Args:
proxy: Proxy type.
session: Session factory function, c.f.
:func:`darc.requests.null_session`.
driver: Driver factory function, c.f.
:func:`darc.selenium.null_driver`.
"""
LINK_MAP[proxy] = (session, driver) # type: ignore