116 lines
3.3 KiB
Python
116 lines
3.3 KiB
Python
from __future__ import annotations
|
|
|
|
from http import HTTPStatus
|
|
from typing import Any
|
|
|
|
from services.post_ops import (
|
|
run_delete_issue,
|
|
run_history_append,
|
|
run_history_clear,
|
|
run_mark_issue,
|
|
run_output_clear,
|
|
run_suppress_skipped,
|
|
run_update_issue,
|
|
)
|
|
from services.workflows import (
|
|
run_correction_apply_api,
|
|
run_generate_api,
|
|
run_parse_api,
|
|
)
|
|
|
|
|
|
def _read_payload(handler: Any) -> dict[str, Any] | None:
|
|
try:
|
|
payload = handler._read_json_body()
|
|
except ValueError as exc:
|
|
handler._send_json({"ok": False, "error": str(exc)}, HTTPStatus.BAD_REQUEST)
|
|
return None
|
|
if not isinstance(payload, dict):
|
|
handler._send_json({"ok": False, "error": "invalid JSON body"}, HTTPStatus.BAD_REQUEST)
|
|
return None
|
|
return payload
|
|
|
|
|
|
def handle_post_routes(handler: Any, parsed: Any, ctx: dict[str, Any]) -> bool:
|
|
if parsed.path == "/api/parse":
|
|
payload = _read_payload(handler)
|
|
if payload is None:
|
|
return True
|
|
status, body = run_parse_api(payload, ctx)
|
|
handler._send_json(body, status)
|
|
return True
|
|
|
|
if parsed.path == "/api/generate":
|
|
payload = _read_payload(handler)
|
|
if payload is None:
|
|
return True
|
|
status, body = run_generate_api(payload, ctx)
|
|
handler._send_json(body, status)
|
|
return True
|
|
|
|
if parsed.path == "/api/correction/apply":
|
|
payload = _read_payload(handler)
|
|
if payload is None:
|
|
return True
|
|
status, body = run_correction_apply_api(payload, ctx)
|
|
handler._send_json(body, status)
|
|
return True
|
|
|
|
if parsed.path == "/api/log/mark":
|
|
payload = _read_payload(handler)
|
|
if payload is None:
|
|
return True
|
|
status, body = run_mark_issue(payload, ctx)
|
|
handler._send_json(body, status)
|
|
return True
|
|
|
|
if parsed.path == "/api/skipped/suppress":
|
|
payload = _read_payload(handler)
|
|
if payload is None:
|
|
return True
|
|
status, body = run_suppress_skipped(payload, ctx)
|
|
handler._send_json(body, status)
|
|
return True
|
|
|
|
if parsed.path == "/api/issues/update":
|
|
payload = _read_payload(handler)
|
|
if payload is None:
|
|
return True
|
|
status, body = run_update_issue(payload, ctx)
|
|
handler._send_json(body, status)
|
|
return True
|
|
|
|
if parsed.path == "/api/issues/delete":
|
|
payload = _read_payload(handler)
|
|
if payload is None:
|
|
return True
|
|
status, body = run_delete_issue(payload, ctx)
|
|
handler._send_json(body, status)
|
|
return True
|
|
|
|
if parsed.path == "/api/output/clear":
|
|
payload = _read_payload(handler)
|
|
if payload is None:
|
|
return True
|
|
status, body = run_output_clear(ctx)
|
|
handler._send_json(body, status)
|
|
return True
|
|
|
|
if parsed.path == "/api/history/append":
|
|
payload = _read_payload(handler)
|
|
if payload is None:
|
|
return True
|
|
status, body = run_history_append(payload, ctx)
|
|
handler._send_json(body, status)
|
|
return True
|
|
|
|
if parsed.path == "/api/history/clear":
|
|
payload = _read_payload(handler)
|
|
if payload is None:
|
|
return True
|
|
status, body = run_history_clear(ctx)
|
|
handler._send_json(body, status)
|
|
return True
|
|
|
|
return False
|