index.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4. * EKSRelay – single entry point.
  5. *
  6. * Run: php -S 0.0.0.0:8080 -t public
  7. */
  8. require_once __DIR__ . '/../vendor/autoload.php';
  9. use EKSRelay\Core\Env;
  10. use EKSRelay\Core\Logger;
  11. use EKSRelay\Core\Router;
  12. use EKSRelay\Handlers\ChatwootWebhookHandler;
  13. use EKSRelay\Handlers\NewTicketHandler;
  14. use EKSRelay\Handlers\WooToolsHandler;
  15. // ── Bootstrap ──────────────────────────────────────────────────────
  16. Env::load(__DIR__ . '/../.env');
  17. Logger::init();
  18. // ── Routes ─────────────────────────────────────────────────────────
  19. $router = new Router();
  20. // Chatwoot webhook
  21. $router->post('/webhooks/chatwoot', [ChatwootWebhookHandler::class, 'handle']);
  22. // Tools (called by Flowise or external)
  23. $router->post('/tools/new_ticket', [NewTicketHandler::class, 'handle']);
  24. $router->post('/tools/get_order_data', [WooToolsHandler::class, 'getOrderData']);
  25. $router->post('/tools/get_product_data', [WooToolsHandler::class, 'getProductData']);
  26. $router->post('/tools/get_shipping_data', [WooToolsHandler::class, 'getShippingData']);
  27. $router->post('/tools/get_payment_methods', [WooToolsHandler::class, 'getPaymentMethods']);
  28. $router->post('/tools/get_product_compatibility', [WooToolsHandler::class, 'getProductCompatibility']);
  29. $router->post('/tools/get_car_data', [WooToolsHandler::class, 'getCarData']);
  30. // ── Dispatch ───────────────────────────────────────────────────────
  31. $method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
  32. $uri = $_SERVER['REQUEST_URI'] ?? '/';
  33. Logger::info('Request received', ['method' => $method, 'uri' => $uri]);
  34. $router->dispatch($method, $uri);