from typing import Tuple from jsonpath_ng.ext import parse from jsonpath_ng.parser import JsonPathParserError from consts.consts import ( ContextTypes, DOMAIN_CONTEXT_PREFIX, DATA_CONTEXT_PREFIX, SESSION_CONTEXT_PREFIX, ) def is_valid_jsonpath(expr: str) -> bool: try: parse(expr) return True except JsonPathParserError: return False def parse_jsonpath_context_type(expr: str) -> Tuple[str, str]: if expr.startswith(DOMAIN_CONTEXT_PREFIX): return ContextTypes.DOMAIN, f"$.{expr[len(DOMAIN_CONTEXT_PREFIX):]}" elif expr.startswith(DATA_CONTEXT_PREFIX): return ContextTypes.DATA, f"$.{expr[len(DATA_CONTEXT_PREFIX):]}" elif expr.startswith(SESSION_CONTEXT_PREFIX): return ContextTypes.SESSION, f"$.{expr[len(SESSION_CONTEXT_PREFIX):]}" else: return ContextTypes.UNKNOWN, ""