Source code for proxyprotocol.version


from __future__ import annotations

from enum import Enum
from typing import Optional

from . import ProxyProtocol
from .detect import ProxyProtocolDetect
from .noop import ProxyProtocolNoop
from .v1 import ProxyProtocolV1
from .v2 import ProxyProtocolV2

__all__ = ['ProxyProtocolVersion']


[docs] class ProxyProtocolVersion(Enum): """Enumerates the supported PROXY protocol versions.""" #: Do not read a PROXY protocol header from the input stream. NOOP = ProxyProtocolNoop() #: The version should be detected from the signature. This is the #: recommended choice. DETECT = ProxyProtocolDetect() #: Use PROXY protocol version 1. V1 = ProxyProtocolV1() #: Use PROXY protocol version 2. V2 = ProxyProtocolV2()
[docs] @classmethod def get(cls, name: Optional[str] = None) -> ProxyProtocol: """From *name*, return a PROXY protocol implementation class. If *name* is empty or ``None``, :class:`~proxyprotocol.noop.ProxyProtocolNoop` is returned. Args: name: The name of the implementation. Raises: :exc:`KeyError` """ if not name: return cls.NOOP.value pp = cls[name.upper()].value assert isinstance(pp, ProxyProtocol) return pp