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