37 lines
969 B
Python
37 lines
969 B
Python
from abc import ABC
|
|
from typing import Dict
|
|
from urllib.parse import SplitResult
|
|
|
|
|
|
class Message(ABC):
|
|
version: str
|
|
headers: Dict[str, str]
|
|
raw: [str]
|
|
body: bytes
|
|
|
|
def __init__(self, version: str, headers: Dict[str, str], raw=None, body: bytes = None):
|
|
self.version = version
|
|
self.headers = headers
|
|
self.raw = raw
|
|
self.body = body
|
|
|
|
|
|
class ResponseMessage(Message):
|
|
status: int
|
|
msg: str
|
|
|
|
def __init__(self, version: str, status: int, msg: str, headers: Dict[str, str], raw=None, body: bytes = None):
|
|
super().__init__(version, headers, raw, body)
|
|
self.status = status
|
|
self.msg = msg
|
|
|
|
|
|
class RequestMessage(Message):
|
|
method: str
|
|
target: SplitResult
|
|
|
|
def __init__(self, version: str, method: str, target, headers: Dict[str, str], raw=None, body: bytes = None):
|
|
super().__init__(version, headers, raw, body)
|
|
self.method = method
|
|
self.target = target
|