def _wrap_handler()

in chalice/app.py [0:0]


    def _wrap_handler(self, handler_type: str,
                      handler_name: str,
                      user_handler: UserHandlerFuncType
                      ) -> UserHandlerFuncType:
        if handler_type in _EVENT_CLASSES:
            if handler_type == 'lambda_function':
                # We have to wrap existing @app.lambda_function()
                # handlers for backwards compat reasons so we can
                # preserve the `def handler(event, context): ...`
                # interface.  However we need a consistent interface
                # for middleware so we have to wrap the event
                # here.
                user_handler = PureLambdaWrapper(user_handler)
            return EventSourceHandler(
                user_handler, _EVENT_CLASSES[handler_type],
                middleware_handlers=self._get_middleware_handlers(
                    event_type=_MIDDLEWARE_MAPPING[handler_type],
                )
            )

        websocket_event_classes = [
            'on_ws_connect',
            'on_ws_message',
            'on_ws_disconnect',
        ]
        if self.websocket_api and handler_type in websocket_event_classes:
            return WebsocketEventSourceHandler(
                user_handler, WebsocketEvent,
                self.websocket_api,
                middleware_handlers=self._get_middleware_handlers(
                    event_type='websocket')
            )
        if handler_type == 'authorizer':
            # Authorizer is special cased and doesn't quite fit the
            # EventSourceHandler pattern.
            return ChaliceAuthorizer(handler_name, user_handler)
        return user_handler