<?php
|
namespace JVBase\rest\routes;
|
|
use JVBase\JVB;
|
use JVBase\rest\RestRouteManager;
|
use WP_REST_Request;
|
use WP_REST_Response;
|
|
if (!defined('ABSPATH')) {
|
exit; // Exit if accessed directly
|
}
|
class ErrorRoutes extends RestRouteManager
|
{
|
/**
|
* Registers error routes
|
* @return void
|
*/
|
public function registerRoutes():void
|
{
|
register_rest_route($this->namespace, '/errors/log', [
|
[
|
'methods' => 'POST',
|
'callback' => [$this, 'handleErrorLog'],
|
'permission_callback' => '__return_true', // Allow anyone to log errors
|
]
|
]);
|
}
|
|
/**
|
* @param WP_REST_Request $request
|
*
|
* @return WP_REST_Response
|
*/
|
public function handleErrorLog(WP_REST_Request$request):WP_REST_Response
|
{
|
$error_type = $request->get_param('error_type');
|
$message = $request->get_param('message');
|
$context = json_decode($request->get_param('context'), true);
|
|
// Determine severity based on error type
|
$severity = $this->getSeverityFromType($error_type);
|
|
JVB()->error()->log(
|
$context['component'] ?? 'client-js',
|
$message,
|
$context,
|
$severity
|
);
|
|
return new WP_REST_Response([
|
'success' => true,
|
'message' => 'Error logged'
|
]);
|
}
|
|
/**
|
* @param string $type
|
*
|
* @return string
|
*/
|
private function getSeverityFromType(string $type):string
|
{
|
$severity_map = [
|
'network' => 'warning',
|
'timeout' => 'warning',
|
'offline' => 'info',
|
'auth' => 'warning',
|
'rate_limit' => 'warning',
|
'server' => 'error',
|
'client' => 'error',
|
'unknown' => 'error'
|
];
|
|
return $severity_map[$type] ?? 'error';
|
}
|
}
|