| 60 | |
| 61 | @classmethod |
| 62 | def from_json(cls, data: HTTPSRecordJSON) -> Self: |
| 63 | target_name = data.pop("target_name") |
| 64 | assert isinstance(target_name, str) |
| 65 | priority = data.pop("priority") |
| 66 | assert isinstance(priority, int) |
| 67 | params: dict[int, bytes] = {} |
| 68 | for k, v in data.items(): |
| 69 | if isinstance(k, str): |
| 70 | k = SVCParamKeys[k.upper()].value |
| 71 | assert isinstance(v, str) |
| 72 | params[k] = strutils.escaped_str_to_bytes(v) |
| 73 | return cls(target_name=target_name, priority=priority, params=params) |
| 74 | |
| 75 | |
| 76 | def _unpack_params(data: bytes, offset: int) -> dict[int, bytes]: |