Openclaw / webhook_server.py
Elysiadev11's picture
Upload 5 files
cdf9dc5 verified
#!/usr/bin/env python3
import os
import json
from http.server import HTTPServer, BaseHTTPRequestHandler
from urllib.parse import urlparse, parse_qs
class WebhookHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/plain')
self.end_headers()
self.wfile.write(b'Webhook server is running')
def do_POST(self):
content_length = int(self.headers.get('Content-Length', 0))
if content_length > 0:
post_data = self.rfile.read(content_length)
else:
post_data = b''
# Log the webhook request
print(f"Webhook received: {self.path}")
print(f"Headers: {dict(self.headers)}")
if post_data:
print(f"Body: {post_data.decode('utf-8', errors='ignore')}")
# Try to parse as JSON
try:
data = json.loads(post_data.decode('utf-8'))
print(f"JSON data: {json.dumps(data, indent=2)}")
except:
pass
# Respond with 200 OK
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
self.wfile.write(b'{"status": "ok"}')
def log_message(self, format, *args):
# Suppress default logging
pass
def run_server(port=8787, host='0.0.0.0'):
server_address = (host, port)
httpd = HTTPServer(server_address, WebhookHandler)
print(f"Webhook server running on {host}:{port}")
try:
httpd.serve_forever()
except KeyboardInterrupt:
print("\nShutting down webhook server")
httpd.shutdown()
if __name__ == '__main__':
run_server()