Spaces:
Running
Running
File size: 1,715 Bytes
cdf9dc5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #!/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() |