| 122 | return hmac.compare_digest(supplied, BRIDGE_TOKEN) |
| 123 | |
| 124 | def request_body_length(self) -> int | None: |
| 125 | raw_length = self.headers.get("content-length") |
| 126 | if raw_length is None: |
| 127 | self.reject(411, "content-length is required") |
| 128 | return None |
| 129 | try: |
| 130 | length = int(raw_length) |
| 131 | except ValueError: |
| 132 | self.reject(400, "content-length must be an integer") |
| 133 | return None |
| 134 | if length < 0: |
| 135 | self.reject(400, "content-length must not be negative") |
| 136 | return None |
| 137 | if length > MAX_REQUEST_BODY_BYTES: |
| 138 | self.reject(413, "request body is too large") |
| 139 | return None |
| 140 | return length |
| 141 | |
| 142 | def read_request_payload(self, length: int) -> dict[str, Any] | None: |
| 143 | try: |