def set_regular_route(self, uri: str, fun: Callable, method: int = METHOD_HEAD | METHOD_GET, converters=(), rule: str = None): r"""Set handler for uri defined by regular expression. Another way to add fn as handler for uri defined by regular expression. See Application.regular_route documentation for details. .. code:: python app.set_regular_route('/use/\w+/post', user_create, METHOD_POST) This method is internally use, when groups are found in static route, adding by route or set_route method. """ # pylint: disable=too-many-arguments r_uri = re.compile(uri, re.U) if r_uri not in self.__rhandlers: self.__rhandlers[r_uri] = {} for val in methods.values(): if method & val: self.__rhandlers[r_uri][val] = (fun, converters, rule)
def set_route(self, uri: str, fun: Callable, method: int = METHOD_HEAD | METHOD_GET): """Set handler for uri and method. Another way to add fun as handler for uri. See Application.route documentation for details. .. code:: python app.set_route('/use/post', user_create, METHOD_POST) """ if re_filter.search(uri): r_uri = re_filter.sub(self.__regex, uri) + '$' converters = tuple( (g[0], self.__converter(g[1])) for g in (m.groups() for m in re_filter.finditer(uri))) self.set_regular_route(r_uri, fun, method, converters, uri) else: if uri not in self.__handlers: self.__handlers[uri] = {} for val in methods.values(): if method & val: self.__handlers[uri][val] = fun
def set_http_state(self, code, fn, method=METHOD_HEAD | METHOD_GET | METHOD_POST): """Set fn as handler for http state code and method.""" if code not in self.__shandlers: self.__shandlers[code] = {} for m in methods.values(): if method & m: self.__shandlers[code][m] = fn
def set_http_state(self, status_code: int, fun: Callable, method: int = METHOD_HEAD | METHOD_GET | METHOD_POST): """Set function as handler for http state code and method.""" if status_code not in self.__shandlers: self.__shandlers[status_code] = {} for val in methods.values(): if method & val: self.__shandlers[status_code][val] = fun
def set_default(self, fn, method=METHOD_HEAD | METHOD_GET): """Set default handler. Set fn default handler for http method called befor error_not_found. app.set_default(default_get_post, METHOD_GET_POST) """ for m in methods.values(): if method & m: self.__dhandlers[m] = fn
def set_error_handler(self, error: Type[Exception], fun: Callable, method: int = METHOD_HEAD | METHOD_GET | METHOD_POST): """Set function as handler for exception and method.""" if error not in self.__ehandlers: self.__ehandlers[error] = {} for val in methods.values(): if method & val: self.__ehandlers[error][val] = fun
def set_default(self, fun: Callable, method: int = METHOD_HEAD | METHOD_GET): """Set default handler. Set fun default handler for http method called before error_not_found. .. code:: python app.set_default(default_get_post, METHOD_GET_POST) """ for val in methods.values(): if method & val: self.__dhandlers[val] = fun
def set_rroute(self, r_uri, fn, method=METHOD_HEAD | METHOD_GET, convertors=()): """Set hanlder for uri defined by regular expression. Another way to add fn as handler for uri defined by regular expression. See Application.rroute documentation for details. app.set_rroute('/use/\w+/post', user_create, METHOD_POST) This method is internally use, when groups are found in static route, adding by route or set_route method. """ r_uri = re.compile(r_uri, re.U) if r_uri not in self.__rhandlers: self.__rhandlers[r_uri] = {} for m in methods.values(): if method & m: self.__rhandlers[r_uri][m] = (fn, convertors)
def set_route(self, uri, fn, method=METHOD_HEAD | METHOD_GET): """Set handler for uri and method. Another way to add fn as handler for uri. See Application.route documentation for details. app.set_route('/use/post', user_create, METHOD_POST) """ uri = uni(uri) if re_filter.search(uri): r_uri = re_filter.sub(self.__regex, uri) + '$' convertors = tuple((g[0], self.__convertor(g[1])) for g in (m.groups() for m in re_filter.finditer(uri))) self.set_rroute(r_uri, fn, method, convertors) else: if uri not in self.__handlers: self.__handlers[uri] = {} for m in methods.values(): if method & m: self.__handlers[uri][m] = fn
def __fill_default_shandlers(code: int, handler: Callable): default_states[code] = {} for val in methods.values(): default_states[code][val] = handler
def __fill_default_shandlers(code, handler): default_shandlers[code] = {} for m in methods.values(): default_shandlers[code][m] = handler