Source code for harp.http.errors
from functools import cached_property
from typing import Optional
from multidict import MultiDict, MultiDictProxy
from .typing import BaseHttpMessage
[docs]
class HttpError(BaseHttpMessage):
kind = "error"
[docs]
def __init__(
self,
message: str,
/,
*,
exception: Optional[Exception] = None,
status=500,
verbose_message=None,
):
super().__init__()
self.message = message
self.exception = exception
self.status = status
self.verbose_message = verbose_message or message
@cached_property
def headers(self) -> MultiDictProxy:
return MultiDictProxy(MultiDict())
@cached_property
def body(self) -> bytes:
if self.exception:
msg = str(self.exception)
out = type(self.exception).__name__
if msg:
out += f": {msg}"
return out.encode()
return self.message.encode()