Skip to content

response.py

Provides HTTP response representation.

Response dataclass

Represents an HTTP response.

Parameters:

Name Type Description Default
headers dict

Response headers.

dict()
content Any

Response body.

''
status int

Response status code.

200
content_type str

MIME type of the response.

None
Source code in jetweb/http/response.py
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
@dataclass
class Response:
    """
    Represents an HTTP response.

    :param headers: Response headers.
    :param content: Response body.
    :param status: Response status code.
    :param content_type: MIME type of the response.
    """
    headers: dict = field(default_factory=dict)
    content: Any = ""
    status: int = 200
    content_type: str = None

    def __post_init__(self):
        if not self.content_type:
            self.content_type = "text/plain" if isinstance(self.content, str) else "application/json"
        self.headers["Content-Type"] = self.content_type
        self.reason = HTTPStatus(self.status).phrase

    @property
    def body(self) -> bytes:
        """
        Return body as encoded bytes.

        For responses with content type application/json,
        the content is first JSON-serialized before encoding.

        :returns: Response body encoded as text.
        """
        if self.content_type == "application/json":
            return dumps(self.content).encode()
        return self.content.encode()

    @classmethod
    def ensure_response(cls, obj: Union[Response, object]) -> Response:
        """
        Convert any object or Response into a Response.

        :param obj: Response or any object.
        :returns: Response object.
        """
        return obj if isinstance(obj, cls) else cls(content=obj)

body property

Return body as encoded bytes.

For responses with content type application/json, the content is first JSON-serialized before encoding.

Returns:

Type Description
bytes

Response body encoded as text.

ensure_response(obj) classmethod

Convert any object or Response into a Response.

Parameters:

Name Type Description Default
obj Union[Response, object]

Response or any object.

required

Returns:

Type Description
Response

Response object.

Source code in jetweb/http/response.py
48
49
50
51
52
53
54
55
56
@classmethod
def ensure_response(cls, obj: Union[Response, object]) -> Response:
    """
    Convert any object or Response into a Response.

    :param obj: Response or any object.
    :returns: Response object.
    """
    return obj if isinstance(obj, cls) else cls(content=obj)