| 198 | ) |
| 199 | |
| 200 | async def _handle_http( |
| 201 | self, |
| 202 | request: Request, |
| 203 | setup: HTTPServerSetup, |
| 204 | ) -> Response: |
| 205 | json: Any = None |
| 206 | with contextlib.suppress(Exception): |
| 207 | json = await request.json() |
| 208 | |
| 209 | data: dict | None = None |
| 210 | files: list[tuple[str, FileTypes]] | None = None |
| 211 | with contextlib.suppress(Exception): |
| 212 | form = await request.form() |
| 213 | data = {} |
| 214 | files = [] |
| 215 | for key, value in form.multi_items(): |
| 216 | if isinstance(value, UploadFile): |
| 217 | files.append( |
| 218 | (key, (value.filename, value.file, value.content_type)) |
| 219 | ) |
| 220 | else: |
| 221 | data[key] = value |
| 222 | |
| 223 | http_request = BaseRequest( |
| 224 | request.method, |
| 225 | str(request.url), |
| 226 | headers=request.headers.items(), |
| 227 | cookies=request.cookies, |
| 228 | content=await request.body(), |
| 229 | data=data, |
| 230 | json=json, |
| 231 | files=files, |
| 232 | version=request.scope["http_version"], |
| 233 | ) |
| 234 | |
| 235 | response = await setup.handle_func(http_request) |
| 236 | return Response( |
| 237 | response.content, response.status_code, dict(response.headers.items()) |
| 238 | ) |
| 239 | |
| 240 | async def _handle_ws(self, websocket: WebSocket, setup: WebSocketServerSetup): |
| 241 | request = BaseRequest( |