Spaces:
Running
Running
| #!/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() |