mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-08-13 15:49:16 +03:00
fix(cron): validate expression syntax in _validate_schedule_for_add
This commit is contained in:
@@ -75,10 +75,17 @@ def _validate_schedule_for_add(schedule: CronSchedule) -> None:
|
|||||||
if schedule.tz and schedule.kind != "cron":
|
if schedule.tz and schedule.kind != "cron":
|
||||||
raise ValueError("tz can only be used with cron schedules")
|
raise ValueError("tz can only be used with cron schedules")
|
||||||
|
|
||||||
if schedule.kind == "cron" and schedule.tz:
|
if schedule.kind == "cron":
|
||||||
|
if not schedule.expr or not schedule.expr.strip():
|
||||||
|
raise ValueError("cron schedule requires a non-empty 'expr'")
|
||||||
|
try:
|
||||||
|
from croniter import croniter
|
||||||
|
croniter(schedule.expr)
|
||||||
|
except Exception as e:
|
||||||
|
raise ValueError(f"invalid cron expression '{schedule.expr}': {e}") from None
|
||||||
|
if schedule.tz:
|
||||||
try:
|
try:
|
||||||
from zoneinfo import ZoneInfo
|
from zoneinfo import ZoneInfo
|
||||||
|
|
||||||
ZoneInfo(schedule.tz)
|
ZoneInfo(schedule.tz)
|
||||||
except Exception:
|
except Exception:
|
||||||
raise ValueError(f"unknown timezone '{schedule.tz}'") from None
|
raise ValueError(f"unknown timezone '{schedule.tz}'") from None
|
||||||
|
|||||||
Reference in New Issue
Block a user