Responses
Response interfaces and event data structures.
Bases: ABC
Source code in src/oxidehttp/schema.py
| class BaseResponse(ABC):
is_cached: bool = False
@property
@abstractmethod
def status_code(self) -> HTTPStatus: ...
@property
@abstractmethod
def headers(self) -> Mapping[str, str]: ...
@abstractmethod
async def get_bytes(self) -> memoryview: ...
async def text(self) -> str:
data = await self.get_bytes()
return str(data, encoding='utf-8', errors='replace')
async def json(self) -> dict[Any, Any]:
data = await self.get_bytes()
try:
return decode(data)
except DecodeError as exc:
raise e.OxideJSONDecodeError(str(exc), original=exc) from exc
|
Bases: BaseResponse
Source code in src/oxidehttp/schema.py
| @dataclass(slots=True)
class Response(BaseResponse):
pyreqwest_response: PyreqwestResponse
_bytes: bytes | None = None
@property
@override
def status_code(self) -> HTTPStatus:
return HTTPStatus(self.pyreqwest_response.status)
@property
@override
def headers(self) -> Mapping[str, str]:
return self.pyreqwest_response.headers
@override
async def get_bytes(self) -> memoryview:
if self._bytes is None:
self._bytes = bytes(await self.pyreqwest_response.bytes())
return memoryview(self._bytes)
|
Bases: BaseResponse
Source code in src/oxidehttp/schema.py
| @dataclass(slots=True)
class CachedResponse(BaseResponse):
_status_code: HTTPStatus
_headers: Headers
data: bytes
is_cached: bool = True
@property
@override
def status_code(self) -> HTTPStatus:
return self._status_code
@property
@override
def headers(self) -> Headers:
return self._headers
@override
async def get_bytes(self) -> memoryview:
return memoryview(self.data)
|
Source code in src/oxidehttp/schema.py
| @dataclass(slots=True, frozen=True)
class SSEEvent:
data: str
event: str | None = None
event_id: str | None = None
retry: int | None = None
|