Handles parameter extraction and validation
| 705 | |
| 706 | |
| 707 | class ParameterExtractionMiddleware(Middleware): |
| 708 | """Handles parameter extraction and validation""" |
| 709 | |
| 710 | async def process( |
| 711 | self, context: PipelineContext, next_func: Callable[[], Awaitable[None]] |
| 712 | ) -> None: |
| 713 | # Receive parameters |
| 714 | assert context.ws_comm is not None |
| 715 | context.params = await context.ws_comm.receive_params() |
| 716 | |
| 717 | # Extract and validate |
| 718 | param_extractor = ParameterExtractionStage( |
| 719 | context.throw_error, |
| 720 | infer_local_asset_base_url(context.websocket), |
| 721 | ) |
| 722 | context.extracted_params = await param_extractor.extract_and_validate( |
| 723 | context.params |
| 724 | ) |
| 725 | |
| 726 | # Log what we're generating |
| 727 | print( |
| 728 | f"Generating {context.extracted_params.stack} code in {context.extracted_params.input_mode} mode" |
| 729 | ) |
| 730 | |
| 731 | await next_func() |
| 732 | |
| 733 | |
| 734 | class StatusBroadcastMiddleware(Middleware): |