Newer
Older
smart-home-server / server / SHServ / Controllers / WebhookController.php
@Eugene Sukhodolskiy Eugene Sukhodolskiy 15 hours ago 1 KB Phase 0: gnexus-auth integration infrastructure
<?php

declare(strict_types=1);

namespace SHServ\Controllers;

use SHServ\Integrations\GAuth\AuthService;

class WebhookController extends \SHServ\Middleware\Controller
{
    /**
     * POST /webhooks/gnexus-auth
     */
    public function gnexus_auth()
    {
        $rawBody = file_get_contents('php://input');
        $headers = getallheaders();

        $service = new AuthService();

        try {
            $service->verifyWebhook($rawBody, $headers);
        } catch (\Throwable $e) {
            http_response_code(401);
            return json_encode(['status' => false, 'error' => 'webhook_verification_failed']);
        }

        try {
            $event = $service->parseWebhook($rawBody);
        } catch (\Throwable $e) {
            http_response_code(400);
            return json_encode(['status' => false, 'error' => 'webhook_parse_failed']);
        }

        // Route to handler
        $handler = new \SHServ\Integrations\GAuth\Webhook\WebhookRouter();
        $handler->handle($event);

        return json_encode(['status' => true]);
    }
}