|
|
|
|
|
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() |
|
|
|