HEX
Server: Apache/2.4.65 (Ubuntu)
System: Linux ielts-store-v2 6.8.0-1036-gcp #38~22.04.1-Ubuntu SMP Thu Aug 14 01:19:18 UTC 2025 x86_64
User: root (0)
PHP: 7.2.34-54+ubuntu20.04.1+deb.sury.org+1
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
File: /var/www/html/ielts-store/wp-content/plugins/automatewoo/includes/Rest_Api.php
<?php

namespace AutomateWoo;

use AutomateWoo\Rest_Api\Controllers\WorkflowPresets as WorkflowPresetsController;
use AutomateWoo\Rest_Api\Controllers\Workflows as WorkflowsController;
use AutomateWoo\Rest_Api\Controllers\ManualWorkflowRunner as ManualWorkflowRunnerController;
use AutomateWoo\Rest_Api\Utilities\Controller_Namespace;
use WP_REST_Controller;
use WP_REST_Request;
use WP_REST_Response;

/**
 * Class Rest_Api
 *
 * @since 4.9.0
 */
final class Rest_Api {

	use Controller_Namespace;

	/**
	 * Init AutomateWoo's Rest API.
	 */
	public function init() {
		add_action( 'rest_api_init', [ $this, 'register_routes' ], 15 );
		add_filter( 'rest_namespace_index', [ $this, 'filter_namespace_index' ], 10, 2 );
	}

	/**
	 * Register REST API routes.
	 */
	public function register_routes() {
		foreach ( $this->get_controllers() as $controller ) {
			$controller->register_routes();
		}
	}

	/**
	 * Get REST API controller objects.
	 *
	 * @return WP_REST_Controller[]
	 * @throws Exception When a class doesn't implement the correct interface.
	 */
	private function get_controllers() {
		$classes = [
			WorkflowsController::class,
			ManualWorkflowRunnerController::class,
			WorkflowPresetsController::class,
		];

		$controllers = [];
		foreach ( $classes as $class ) {
			$object = new $class();
			if ( ! $object instanceof WP_REST_Controller ) {
				throw new Exception(
					sprintf( '%s must implement %s', get_class( $object ), WP_REST_Controller::class )
				);
			}

			$controllers[] = $object;
		}

		return $controllers;
	}

	/**
	 * Filter the index response for our namespace.
	 *
	 * @param WP_REST_Response $response The response object for the given request.
	 * @param WP_REST_Request  $request  The current REST Request object.
	 *
	 * @return WP_REST_Response The filtered response object.
	 */
	public function filter_namespace_index( $response, $request ) {
		if ( $this->namespace === $request['namespace'] ) {
			$response->data['info'] = __( 'AutomateWoo API endpoints are still under development and subject to change.', 'automatewoo' );
		}

		return $response;
	}
}