exec("CREATE TABLE IF NOT EXISTS hamid_webhooks ( id SERIAL PRIMARY KEY, name VARCHAR(100), url TEXT, event_type VARCHAR(50), active BOOLEAN DEFAULT true, created_at TIMESTAMP DEFAULT NOW() )"); $action = $_POST['action'] ?? $_GET['action'] ?? ''; switch ($action) { case 'register': $stmt = $pdo->prepare("INSERT INTO hamid_webhooks (name, url, event_type) VALUES (?, ?, ?)"); $stmt->execute([$_POST['name'], $_POST['url'], $_POST['event_type'] ?? 'message']); echo json_encode(['success' => true, 'id' => $pdo->lastInsertId()]); break; case 'trigger': $event = $_POST['event_type'] ?? 'message'; $payload = $_POST['payload'] ?? '{}'; $webhooks = $pdo->query("SELECT * FROM hamid_webhooks WHERE event_type='$event' AND active=true")->fetchAll(PDO::FETCH_ASSOC); $results = []; foreach ($webhooks as $wh) { $ch = curl_init($wh['url']); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => $payload, CURLOPT_HTTPHEADER => ['Content-Type: application/json'], CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 5 ]); $resp = curl_exec($ch); $results[] = ['name' => $wh['name'], 'status' => curl_getinfo($ch, CURLINFO_HTTP_CODE)]; curl_close($ch); } echo json_encode(['success' => true, 'triggered' => count($results), 'results' => $results]); break; case 'list': $webhooks = $pdo->query("SELECT * FROM hamid_webhooks")->fetchAll(PDO::FETCH_ASSOC); echo json_encode(['webhooks' => $webhooks]); break; default: echo json_encode(['actions' => ['register', 'trigger', 'list']]); }