HEX
Server: LiteSpeed
System: Linux kapuas.iixcp.rumahweb.net 5.14.0-427.42.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 1 14:58:02 EDT 2024 x86_64
User: mirz4654 (1666)
PHP: 8.1.33
Disabled: system,exec,escapeshellarg,escapeshellcmd,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,pclose,dl,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setsid,posix_setuid,posix_setpgid,ini_alter,show_source,define_syslog_variables,symlink,syslog,openlog,openlog,closelog,ocinumcols,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dll,ftp,myshellexec,socket_bind,mail,posix_getwpuid
Upload Files
File: /home/mirz4654/public_html/wp-content/plugins/vibes/includes/api/class-beaconroute.php
<?php
/**
 * DecaLog beacon handler
 *
 * Handles all beacon operations.
 *
 * @package API
 * @author  Pierre Lannoy <https://pierre.lannoy.fr/>.
 * @since   1.0.0
 */

namespace Vibes\API;

use Vibes\Plugin\Feature\Capture;

/**
 * Define the item operations functionality.
 *
 * Handles all item operations.
 *
 * @package API
 * @author  Pierre Lannoy <https://pierre.lannoy.fr/>.
 * @since   1.0.0
 */
class BeaconRoute extends \WP_REST_Controller {

	/**
	 * The acceptable types.
	 *
	 * @since  1.0.0
	 * @var    array    $types    The acceptable types.
	 */
	protected $types = [ 'webvital', 'resource', 'navigation' ];

	/**
	 * Register the routes for the objects of the controller.
	 *
	 * @since  1.0.0
	 */
	public function register_routes() {
		$this->register_route_beacon();
	}

	/**
	 * Register the routes for beacon.
	 *
	 * @since  1.0.0
	 */
	public function register_route_beacon() {
		register_rest_route(
			VIBES_REST_NAMESPACE,
			'beacon',
			[
				[
					'methods'             => 'POST',
					'callback'            => [ $this, 'post_beacon' ],
					'permission_callback' => [ $this, 'post_beacon_permissions_check' ],
					'args'                => array_merge( $this->arg_schema_beacon() ),
					'schema'              => [ $this, 'get_schema' ],
				],
			]
		);
	}

	/**
	 * Get the query params for beacon.
	 *
	 * @return array    The schema fragment.
	 * @since  1.0.0
	 */
	public function arg_schema_beacon() {
		return [];
	}

	/**
	 * Check if a given request has access to post beacon
	 *
	 * @param \WP_REST_Request $request Full data about the request.
	 * @return \WP_Error|bool
	 */
	public function post_beacon_permissions_check( $request ) {
		return true;
	}

	/**
	 * Post metrics
	 *
	 * @param \WP_REST_Request $request Full data about the request.
	 * @return \WP_REST_Response
	 */
	public function post_beacon( $request ) {
		return Capture::preprocess( \json_decode( $request->get_body(), true ) );
	}

}