<?php
/**
* The endpoint for getting the current webhooks simulation state.
*
* @package WooCommerce\PayPalCommerce\Webhooks\Endpoint
*/
declare (strict_types=1);
namespace WooCommerce\PayPalCommerce\Webhooks\Endpoint;
use Exception;
use WooCommerce\PayPalCommerce\Button\Endpoint\RequestData;
use WooCommerce\PayPalCommerce\Webhooks\Status\WebhookSimulation;
/**
* Class SimulationStateEndpoint
*/
class SimulationStateEndpoint
{
const ENDPOINT = 'ppc-webhooks-simulation-state';
/**
* The simulation handler.
*
* @var WebhookSimulation
*/
private $simulation;
/**
* SimulationStateEndpoint constructor.
*
* @param WebhookSimulation $simulation The simulation handler.
*/
public function __construct(WebhookSimulation $simulation)
{
$this->simulation = $simulation;
}
/**
* Returns the nonce for the endpoint.
*
* @return string
*/
public static function nonce(): string
{
return self::ENDPOINT;
}
/**
* Handles the incoming request.
*/
public function handle_request(): void
{
if (!current_user_can('manage_woocommerce')) {
wp_send_json_error('Not admin.', 403);
}
try {
$state = $this->simulation->get_state();
wp_send_json_success(array('state' => $state));
} catch (Exception $error) {
wp_send_json_error($error->getMessage(), 500);
}
}
}