.+)/', self::ALL_METHODS, [new WpToolkitApiController((new HttpClientFactory())->getClient()), 'handleRequest'], [new UserRolePermissionHandler(['administrator']), 'handlePermissions'], ], ]; } /** * @return void */ public static function init() { try { $routes = self::getRoutes(); foreach ($routes as $route) { list($nameSpace, $path, $method, $controller, $permissionHandler) = $route; self::registerRoute($nameSpace, $path, $method, $controller, $permissionHandler); } } catch (\Exception $e) { error_log('Registering REST routes error: ' . $e->getMessage()); } } /** * @param callable $controller * @return RequestHandlerInterface */ private static function middlewares($controller) { return new ErrorCatchingMiddleware( new ControllerHandlerMiddleware( $controller ) ); } /** * @param string $nameSpace * @param string $path * @param string $method * @param callable $controller * @param callable $permissionHandler * @return void */ private static function registerRoute($nameSpace, $path, $method, $controller, $permissionHandler) { register_rest_route($nameSpace, $path, [ 'methods' => $method, 'callback' => [self::middlewares($controller), 'handleRequest'], 'permission_callback' => $permissionHandler, ]); } }