| | |
| | from http.server import BaseHTTPRequestHandler, HTTPServer |
| | import json |
| | import urllib.parse |
| | import sys |
| | import os |
| |
|
| | |
| | sys.path.append(os.path.dirname(os.path.abspath(__file__))) |
| |
|
| | |
| | |
| | from run import generate_response as generate_answer |
| |
|
| | class NewtonHandler(BaseHTTPRequestHandler): |
| | def do_POST(self): |
| | if self.path == "/ask": |
| | content_length = int(self.headers['Content-Length']) |
| | post_data = self.rfile.read(content_length).decode('utf-8') |
| | data = json.loads(post_data) |
| | query = data.get("query", "").strip() |
| |
|
| | try: |
| | answer = generate_answer(query) |
| | response = {"answer": answer} |
| | self.send_response(200) |
| | self.send_header("Content-type", "application/json") |
| | self.send_header("Access-Control-Allow-Origin", "*") |
| | self.end_headers() |
| | self.wfile.write(json.dumps(response, ensure_ascii=False).encode('utf-8')) |
| | except Exception as e: |
| | self.send_response(500) |
| | self.end_headers() |
| | self.wfile.write(f"Ошибка: {str(e)}".encode()) |
| |
|
| | def do_OPTIONS(self): |
| | self.send_response(200) |
| | self.send_header("Access-Control-Allow-Origin", "*") |
| | self.send_header("Access-Control-Allow-Methods", "POST, OPTIONS") |
| | self.send_header("Access-Control-Allow-Headers", "Content-Type") |
| | self.end_headers() |
| |
|
| | if __name__ == "__main__": |
| | server = HTTPServer(('localhost', 8000), NewtonHandler) |
| | print("Newton Search сервер запущен на http://localhost:8000") |
| | print("Открой GitHub Pages и работай!") |
| | server.serve_forever() |
| |
|