50 lines
2.0 KiB
PHP
50 lines
2.0 KiB
PHP
<?php
|
|
header('Content-Type: application/json');
|
|
header('Access-Control-Allow-Origin: *');
|
|
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') exit;
|
|
|
|
require_once '/opt/wevads/vault/credentials.php';
|
|
|
|
$payload = json_decode(file_get_contents('php://input'), true) ?: [];
|
|
$action = $payload['action'] ?? $_GET['action'] ?? 'status';
|
|
|
|
// Mattermost DeerFlow hook
|
|
$MM_HOOK = 'https://mm.weval-consulting.com/hooks/pt54hzthf3b6pe6rgp1ionipnh';
|
|
|
|
if ($action === 'status') {
|
|
echo json_encode([
|
|
'service' => 'CodeRabbit',
|
|
'status' => 'connected',
|
|
'github' => 'Yacineutt',
|
|
'repos' => ['weval-consulting', 'wevia-brain', 'wevads-platform', 'weval-infra'],
|
|
'features' => ['PR reviews', 'Code suggestions', 'Security scan', 'Best practices'],
|
|
'mattermost' => 'wired',
|
|
'webhook' => 'active'
|
|
]);
|
|
} elseif ($action === 'webhook' || isset($payload['pull_request'])) {
|
|
// GitHub PR webhook event
|
|
$pr = $payload['pull_request'] ?? [];
|
|
$repo = $payload['repository']['full_name'] ?? 'unknown';
|
|
$pr_title = $pr['title'] ?? 'No title';
|
|
$pr_url = $pr['html_url'] ?? '';
|
|
$pr_action = $payload['action'] ?? 'unknown';
|
|
|
|
// Forward to Mattermost
|
|
$mm_msg = "**CodeRabbit** | `$repo` PR #" . ($pr['number'] ?? '?') . " $pr_action\n> $pr_title\n$pr_url";
|
|
$ch = curl_init($MM_HOOK);
|
|
curl_setopt_array($ch, [
|
|
CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 5,
|
|
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
|
|
CURLOPT_POSTFIELDS => json_encode(['text' => $mm_msg])
|
|
]);
|
|
curl_exec($ch); curl_close($ch);
|
|
|
|
// Log
|
|
$logDir = '/var/log/wevia/coderabbit/';
|
|
file_put_contents($logDir . 'webhook_' . date('Ymd') . '.log',
|
|
date('c') . " $pr_action $repo PR#" . ($pr['number'] ?? '?') . "\n", FILE_APPEND);
|
|
echo json_encode(['status' => 'received', 'forwarded_to' => 'mattermost']);
|
|
} else {
|
|
echo json_encode(['status' => 'ok', 'action' => $action]);
|
|
}
|