mirror of
https://github.com/guillaumemeyer/watermarks-remover.git
synced 2026-08-22 13:11:57 +02:00
feat: add POST /clean/batch and /inspect/batch endpoints (#137)
Directory-scale cleaning already exists in the CLI (audit_dir.py, -j concurrency, SARIF export from #101), but the HTTP service handled one file per request. Any web app or CI step talking to the service over HTTP instead of the CLI paid N full round trips to clean N files. Extract the single-file /inspect and /clean logic into _inspect_payload and _clean_payload so both the existing single-file endpoints and the new batch endpoints run the identical pipeline — no duplicated cleaning logic. A malformed entry in a batch (bad base64, unknown option, unrecognized format) surfaces as that entry's "ok": false with an "error" string instead of aborting the rest of the batch. Capped at WATERMARKS_MAX_BATCH_FILES per request (default 50) as defense-in-depth against a request packing many tiny files into one call; the existing MAX_BODY_BYTES envelope cap already bounds total payload size the same as a single-file request. /openapi.json picks up both routes automatically since the spec is generated from the route table. Closes #136 Co-authored-by: Guillaume Meyer (The Opinionated Man) <1385518+guillaumemeyer@users.noreply.github.com>
This commit is contained in:
co-authored by
Guillaume Meyer
parent
e4003427f2
commit
7e5b4c1a14
@@ -170,6 +170,10 @@ The same machinery runs as a stdlib HTTP service (`service/scripts/server.py`)
|
||||
| POST | `/inspect` | `{"file": "<base64>", "name": "notes.md"}` | `{"ok", "kind", "suspicious", "report"}` |
|
||||
| POST | `/detect` | `{"file": "<base64>", "name": "notes.txt"}` | `{"ok", "kind", "detections": [...]}` |
|
||||
| POST | `/clean` | `{"file": "<base64>", "name": "notes.md", "options": {...}}` | `{"ok", "kind", "cleaned": "<base64>", "report"}` |
|
||||
| POST | `/inspect/batch` | `{"files": [{"file": "<base64>", "name": "notes.md"}, ...]}` | `{"ok", "results": [{"name", "ok", "kind", "suspicious", "report"}, ...]}` |
|
||||
| POST | `/clean/batch` | `{"files": [{"file": "<base64>", "name": "notes.md", "options": {...}}, ...]}` | `{"ok", "results": [{"name", "ok", "kind", "cleaned": "<base64>", "report"}, ...]}` |
|
||||
|
||||
Batch endpoints loop the same per-file pipeline as `/inspect` and `/clean`, capped at `WATERMARKS_MAX_BATCH_FILES` files per request (default 50). A malformed entry (bad base64, unknown option, unrecognized format) surfaces as that entry's `"ok": false` with an `"error"` string — it never aborts the rest of the batch.
|
||||
|
||||
```bash
|
||||
WM="http://127.0.0.1:8765"
|
||||
|
||||
Reference in New Issue
Block a user