feat(api): Add lightweight HTTP server for API hooks

This commit is contained in:
2026-02-23 12:11:01 -05:00
parent bd7ccf3a07
commit 44c2585f95
3 changed files with 68 additions and 0 deletions

41
api_hooks.py Normal file
View File

@@ -0,0 +1,41 @@
import json
import threading
from http.server import HTTPServer, BaseHTTPRequestHandler
import logging
class HookHandler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path == '/status':
self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.end_headers()
self.wfile.write(json.dumps({'status': 'ok'}).encode('utf-8'))
else:
self.send_response(404)
self.end_headers()
def log_message(self, format, *args):
logging.info("Hook API: " + format % args)
class HookServer:
def __init__(self, app, port=8999):
self.app = app
self.port = port
self.server = None
self.thread = None
def start(self):
if not getattr(self.app, 'test_hooks_enabled', False):
return
self.server = HTTPServer(('127.0.0.1', self.port), HookHandler)
self.thread = threading.Thread(target=self.server.serve_forever, daemon=True)
self.thread.start()
logging.info(f"Hook server started on port {self.port}")
def stop(self):
if self.server:
self.server.shutdown()
self.server.server_close()
if self.thread:
self.thread.join()
logging.info("Hook server stopped")