<?php
/**
 * TO TEST:
 *
 * 1. Update config below
 * 2. Run `while sleep 60; do php cron-control-tester.php; done`
 */

// Config
$endpoint = 'http://localhost/wp-json/cron-control/v1/events';
$ssl      = false;
$secret   = 'waffle'; // Value of WP_CRON_CONTROL_SECRET

// Do the stuff
$curl = curl_init();

$body = json_encode( array( 'secret' => $secret, ) );

curl_setopt_array(
	$curl, array(
		CURLOPT_URL            => $endpoint,
		CURLOPT_SSL_VERIFYHOST => false,
		CURLOPT_SSL_VERIFYPEER => false,
		CURLOPT_RETURNTRANSFER => true,
		CURLOPT_ENCODING       => '',
		CURLOPT_FOLLOWLOCATION => true,
		CURLOPT_TIMEOUT        => 10,
		CURLOPT_CUSTOMREQUEST  => 'POST',
		CURLOPT_POSTFIELDS     => $body,
		CURLOPT_HTTPHEADER     => array(
			'Content-Type: application/json',
			'Content-Length: ' . strlen( $body ),
		),
	)
);

$results = curl_exec( $curl );
$err     = curl_error( $curl );

if ( ! empty( $err ) ) {
	var_export( $err );
	die;
}

$results = json_decode( $results, true );

curl_close( $curl );

if ( ! is_array( $results ) || ! isset( $results['endpoint'] ) || empty( $results['events'] ) ) {
	die;
}

if ( ! $ssl ) {
	$results['endpoint'] = preg_replace( '#^https://#i', 'http://', $results['endpoint'] );
}

foreach ( $results['events'] as $event ) {
	$curl = curl_init();

	$put_data = json_encode( array_merge( array( 'secret' => $secret, ), $event ) );

	curl_setopt_array(
		$curl, array(
			CURLOPT_URL            => $results['endpoint'],
			CURLOPT_SSL_VERIFYHOST => false,
			CURLOPT_SSL_VERIFYPEER => false,
			CURLOPT_RETURNTRANSFER => true,
			CURLOPT_FOLLOWLOCATION => true,
			CURLOPT_TIMEOUT        => 0,
			CURLOPT_ENCODING       => '',
			CURLOPT_CUSTOMREQUEST  => 'PUT',
			CURLOPT_POSTFIELDS     => $put_data,
			CURLOPT_HTTPHEADER     => array(
				'Content-Type: application/json',
				'Content-Length: ' . strlen( $put_data ),
			),
		)
	);

	$result = curl_exec( $curl );
	$err    = curl_error( $curl );

	curl_close( $curl );

	if ( ! empty( $err ) ) {
		var_export( $err );
		continue;
	}

	$result = json_decode( $result, true );

	var_export( $result );
	echo "\n";
}