anti
7036a86e76
refactor(artifacts): extract resolve_artifact_path to shared module
...
Move artifact path validation + symlink-escape check out of the
admin-gated download endpoint into decnet/artifacts/paths.py so the
TTP EmailLifter can disk-reach .eml files at tag-time without
duplicating regex/root logic (DEBT-047).
The router now catches ArtifactPathError and re-raises HTTPException(400);
behavior is unchanged.
2026-05-02 20:02:47 -04:00
..
2026-04-27 22:55:48 -04:00
2026-05-02 20:02:47 -04:00
2026-05-02 20:02:47 -04:00
2026-04-25 04:01:28 -04:00
2026-05-01 08:31:05 -04:00
2026-04-29 17:49:31 -04:00
2026-05-02 19:35:20 -04:00
2026-05-02 02:38:24 -04:00
2026-05-02 03:20:53 -04:00
2026-04-30 22:16:00 -04:00
2026-04-29 11:56:40 -04:00
2026-05-02 02:38:24 -04:00
2026-04-28 13:01:37 -04:00
2026-04-28 22:43:34 -04:00
2026-04-27 17:29:25 -04:00
2026-04-19 23:50:53 -04:00
2026-05-01 02:07:53 -04:00
2026-04-26 07:39:46 -04:00
2026-04-26 09:13:59 -04:00
2026-04-26 21:21:36 -04:00
2026-04-24 17:26:40 -04:00
2026-05-02 18:08:29 -04:00
2026-04-28 00:44:40 -04:00
2026-04-23 21:34:25 -04:00
2026-05-01 01:47:04 -04:00
2026-04-28 22:43:34 -04:00
2026-04-17 13:20:05 -04:00
2026-04-28 11:14:44 -04:00
2026-04-28 11:28:54 -04:00
2026-04-30 21:14:36 -04:00
2026-05-02 19:08:37 -04:00
2026-05-02 19:50:24 -04:00
2026-04-26 20:30:24 -04:00
2026-04-28 13:01:11 -04:00
2026-04-28 00:44:40 -04:00
2026-04-23 21:34:25 -04:00
2026-04-30 23:51:41 -04:00
2026-05-02 18:08:48 -04:00
2026-04-27 21:14:48 -04:00
2026-04-26 03:18:34 -04:00
2026-05-02 19:10:30 -04:00
2026-04-24 16:39:38 -04:00
2026-04-29 00:24:17 -04:00
2026-04-28 18:36:00 -04:00
2026-04-28 18:36:00 -04:00