Source code for pcapkit.protocols.data.application.httpv1

# -*- coding: utf-8 -*-
"""data model for HTTP/1.* protocol"""

from typing import TYPE_CHECKING

from pcapkit.corekit.infoclass import info_final
from pcapkit.protocols.data.data import Data
from pcapkit.protocols.data.protocol import Protocol

if TYPE_CHECKING:
    from typing import Any, Optional

    from pcapkit.const.http.method import Method as Enum_Method
    from pcapkit.const.http.status_code import StatusCode as Enum_StatusCode
    from pcapkit.corekit.infoclass import OrderedMultiInfo
    from pcapkit.corekit.multidict import OrderedMultiDict
    from pcapkit.protocols.application.httpv1 import Type as HTTP_Type

__all__ = [
    'HTTP',

    'Header',
    'RequestHeader', 'ResponseHeader',
]


[docs] @info_final class HTTP(Protocol): """Data model for HTTP/1.* protocol.""" #: HTTP receipt. receipt: 'Header' #: HTTP header. header: 'OrderedMultiInfo[str, str]' #: HTTP body. body: 'Any' #: HTTP field lines as received, CRLF excluded and ``obs-fold`` #: continuations kept: one per field in :attr:`header`, in order. raw_header: 'tuple[bytes, ...]' if TYPE_CHECKING: def __init__(self, receipt: 'Header', header: 'OrderedMultiDict[str, str]', body: 'Any', raw_header: 'tuple[bytes, ...]') -> None: ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
[docs] @info_final class RequestHeader(Header): """Data model for HTTP/1.* request header line.""" #: HTTP request header line. type: 'HTTP_Type' #: HTTP method. method: 'Enum_Method' #: HTTP request URI. uri: 'str' #: HTTP request version. version: 'str' #: Charset to encode :attr:`uri` with, :obj:`None` for UTF-8. charset: 'Optional[str]' #: HTTP request line as received, CRLF excluded. raw_line: 'bytes' if TYPE_CHECKING: def __init__(self, type: 'HTTP_Type', method: 'Enum_Method', uri: 'str', version: 'str', charset: 'Optional[str]', raw_line: 'bytes') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin
[docs] @info_final class ResponseHeader(Header): """Data model for HTTP/1.* response header line.""" #: HTTP response header line. type: 'HTTP_Type' #: HTTP response version. version: 'str' #: HTTP response status. status: 'Enum_StatusCode' #: HTTP response status message. message: 'str' #: Charset to encode :attr:`message` with, :obj:`None` for UTF-8. charset: 'Optional[str]' #: HTTP status line as received, CRLF excluded. raw_line: 'bytes' if TYPE_CHECKING: def __init__(self, type: 'HTTP_Type', version: 'str', status: 'Enum_StatusCode', message: 'str', charset: 'Optional[str]', raw_line: 'bytes') -> 'None': ... # pylint: disable=unused-argument,super-init-not-called,multiple-statements,line-too-long,redefined-builtin