56 lines
1.3 KiB
Python
56 lines
1.3 KiB
Python
from __future__ import annotations
|
|
|
|
import typing
|
|
|
|
if typing.TYPE_CHECKING:
|
|
import wsproto
|
|
|
|
from .._models import Response
|
|
|
|
|
|
class HTTPXWSException(Exception):
|
|
"""
|
|
Base exception class for HTTPX WS.
|
|
"""
|
|
|
|
|
|
class WebSocketUpgradeError(HTTPXWSException):
|
|
"""
|
|
Raised when the initial connection didn't correctly upgrade to a WebSocket session.
|
|
"""
|
|
|
|
def __init__(self, response: Response) -> None:
|
|
self.response = response
|
|
|
|
|
|
class WebSocketDisconnect(HTTPXWSException):
|
|
"""
|
|
Raised when the server closed the WebSocket session.
|
|
|
|
Args:
|
|
code:
|
|
The integer close code to indicate why the connection has closed.
|
|
reason:
|
|
Additional reasoning for why the connection has closed.
|
|
"""
|
|
|
|
def __init__(self, code: int = 1000, reason: str | None = None) -> None:
|
|
self.code = code
|
|
self.reason = reason or ""
|
|
|
|
|
|
class WebSocketInvalidTypeReceived(HTTPXWSException):
|
|
"""
|
|
Raised when a event is not of the expected type.
|
|
"""
|
|
|
|
def __init__(self, event: wsproto.events.Event) -> None:
|
|
self.event = event
|
|
|
|
|
|
class WebSocketNetworkError(HTTPXWSException):
|
|
"""
|
|
Raised when a network error occured,
|
|
typically if the underlying stream has closed or timeout.
|
|
"""
|