Source code for aiohttp_middlewares.utils

"""
=========================
aiohttp_middlewares.utils
=========================

Various utility functions for ``aiohttp_middlewares`` library.

"""

from yarl import URL

from aiohttp_middlewares.annotations import Url, Urls


[docs]def match_path(item: Url, path: str) -> bool: """Check whether current path is equal to given URL str or regexp. :param item: URL to compare with request path. :param path: Request path string. """ if isinstance(item, URL): item = str(item) if isinstance(item, str): return item == path try: return bool(item.match(path)) except (AttributeError, TypeError): return False
def match_request(urls: Urls, method: str, path: str) -> bool: """Check whether request method and path matches given URLs or not.""" found = [item for item in urls if match_path(item, path)] if not found: return False if not isinstance(urls, dict): return True found_item = urls[found[0]] method = method.lower() if isinstance(found_item, str): return found_item.lower() == method return any(True for item in found_item if item.lower() == method)