#!/usr/bin/env python3 """server.py — väike HTTP-teenus tõlkeboti fetch-mootorile. Endpointid: POST /fetch body {"url": "...", "mode": "auto|direct|solverr"} -> fetch() tulemus GET /health -> {"ok": true} """ import json from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer from tolke_fetch import fetch PORT = 8192 class Handler(BaseHTTPRequestHandler): server_version = "tolkfetch/1.0" def _send(self, code, payload): body = json.dumps(payload, ensure_ascii=False).encode("utf-8") self.send_response(code) self.send_header("Content-Type", "application/json; charset=utf-8") self.send_header("Content-Length", str(len(body))) self.end_headers() self.wfile.write(body) def do_GET(self): if self.path.startswith("/health"): self._send(200, {"ok": True, "service": "tolkfetch"}) else: self._send(404, {"ok": False, "reason": "not found"}) def do_POST(self): if not self.path.startswith("/fetch"): self._send(404, {"ok": False, "reason": "not found"}) return try: n = int(self.headers.get("Content-Length") or 0) data = json.loads(self.rfile.read(n) or b"{}") except Exception as e: self._send(400, {"ok": False, "reason": "halb JSON: " + str(e)[:120]}) return try: res = fetch(data.get("url") or "", data.get("mode") or "auto") except Exception as e: res = {"ok": False, "url": data.get("url", ""), "reason": "teenuse viga: " + str(e)[:200]} self._send(200, res) def log_message(self, fmt, *args): pass if __name__ == "__main__": srv = ThreadingHTTPServer(("0.0.0.0", PORT), Handler) srv.serve_forever()