| |
| 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'' |
|
|
| |
| 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: |
| data = json.loads(post_data.decode('utf-8')) |
| print(f"JSON data: {json.dumps(data, indent=2)}") |
| except: |
| pass |
|
|
| |
| 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): |
| |
| 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() |