def _prepare_middleware(self, middleware=None, independent_middleware=False): return prepare_middleware( middleware=middleware, independent_middleware=independent_middleware, asgi=True)
def _prepare_middleware(self, middleware=None, independent_middleware=False): self._middleware_ws = prepare_middleware_ws(middleware) return prepare_middleware( middleware=middleware, independent_middleware=independent_middleware, asgi=True, )
def inspect_middlewares(app: App) -> 'MiddlewareInfo': """Inspects the middleware components of an application. Args: app (falcon.App): The application to inspect. Works with both :class:`falcon.App` and :class:`falcon.asgi.App`. Returns: MiddlewareInfo: Information about the app's middleware components. """ types_ = app_helpers.prepare_middleware(app._unprepared_middleware, True, app._ASGI) type_infos = [] for stack in types_: current = [] for method in stack: _, name = _get_source_info_and_name(method) cls = type(method.__self__) _, cls_name = _get_source_info_and_name(cls) current.append(MiddlewareTreeItemInfo(name, cls_name)) type_infos.append(current) middlewareTree = MiddlewareTreeInfo(*type_infos) middlewareClasses = [] names = 'Process request', 'Process resource', 'Process response' for m in app._unprepared_middleware: fns = app_helpers.prepare_middleware([m], True, app._ASGI) class_source_info, cls_name = _get_source_info_and_name(type(m)) methods = [] for method, name in zip(fns, names): if method: real_func = method[0] source_info = _get_source_info(real_func) methods.append( MiddlewareMethodInfo(real_func.__name__, source_info)) m_info = MiddlewareClassInfo(cls_name, class_source_info, methods) middlewareClasses.append(m_info) return MiddlewareInfo(middlewareTree, middlewareClasses, app._independent_middleware)
def __init__(self, media_type=DEFAULT_MEDIA_TYPE, request_type=Request, response_type=Response, middleware=None, router=None, independent_middleware=True, cors_enable=False): self._sinks = [] self._media_type = media_type self._static_routes = [] if cors_enable: cm = CORSMiddleware() if middleware is None: middleware = [cm] else: try: # NOTE(kgriffs): Check to see if middleware is an # iterable, and if so, append the CORSMiddleware # instance. iter(middleware) middleware = list(middleware) middleware.append(cm) except TypeError: # NOTE(kgriffs): Assume the middleware kwarg references # a single middleware component. middleware = [middleware, cm] # set middleware self._middleware = helpers.prepare_middleware( middleware, independent_middleware=independent_middleware) self._independent_middleware = independent_middleware self._router = router or routing.DefaultRouter() self._router_search = self._router.find self._request_type = request_type self._response_type = response_type self._error_handlers = {} self._serialize_error = helpers.default_serialize_error self.req_options = RequestOptions() self.resp_options = ResponseOptions() self.req_options.default_media_type = media_type self.resp_options.default_media_type = media_type # NOTE(kgriffs): Add default error handlers self.add_error_handler(Exception, self._python_error_handler) self.add_error_handler(falcon.HTTPError, self._http_error_handler) self.add_error_handler(falcon.HTTPStatus, self._http_status_handler)
def _prepare_middleware(self, middleware=None, independent_middleware=False): return helpers.prepare_middleware( middleware=middleware, independent_middleware=independent_middleware)