|
|
| import os
|
| import base64
|
|
|
| def read_if_exists(path: str) -> str:
|
| """Read file if it exists, return empty string otherwise."""
|
| try:
|
| with open(path, "r", encoding="utf-8") as f:
|
| return f.read().strip()
|
| except Exception:
|
| return ""
|
|
|
| def file_to_data_url(path: str, mime: str) -> str:
|
| """Convert file to data URL."""
|
| with open(path, "rb") as f:
|
| b64 = base64.b64encode(f.read()).decode("ascii")
|
| return f"data:{mime};base64,{b64}"
|
|
|
| def abs_join(base_dir: str, rel: str) -> str:
|
| """Join paths and return absolute path."""
|
| return os.path.abspath(os.path.join(base_dir, rel))
|
|
|
| def inside_base_dir(base_dir: str, path: str) -> bool:
|
| """Check if path is inside base directory."""
|
| if not isinstance(base_dir, str) or not isinstance(path, str):
|
| return False
|
| base = os.path.realpath(base_dir)
|
| p = os.path.realpath(path)
|
| try:
|
| return os.path.commonpath([base, p]) == base
|
| except Exception:
|
| return False
|
|
|