| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #!/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()
|