HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-172-31-4-197 6.8.0-1036-aws #38~22.04.1-Ubuntu SMP Fri Aug 22 15:44:33 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 7.4.33
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,pcntl_unshare,
Upload Files
File: /var/www/html/wordpress/wp-content/plugins/bit-integrations/includes/Core/Util/API.php
<?php

namespace BitCode\FI\Core\Util;

use WP_REST_Controller;
use WP_REST_Server;

final class API extends WP_REST_Controller
{
    public const READABLE = WP_REST_Server::READABLE;

    public const CREATABLE = WP_REST_Server::CREATABLE;

    public const EDITABLE = WP_REST_Server::EDITABLE;

    public const DELETABLE = WP_REST_Server::DELETABLE;

    private const BASE = 'bit-integrations';

    private const VERSION = 'v1/';

    /**
     * Registers api route
     *
     * @param string $route api route
     * @param array  $args  Rest route method,callback,permissions
     *
     * @return null
     */
    public static function register($route, $args)
    {
        register_rest_route(
            self::BASE,
            self::VERSION . $route,
            $args
        );
    }

    /**
     * Registers api route
     *
     * @param string       $route      api route
     * @param array|string $callback   callback function
     * @param array|string $permission permission callback function
     * @param array        $validation validation
     *
     * @return null
     */
    public static function get($route, $callback, $permission = null, $validation = null)
    {
        $args = [
            'methods'             => self::READABLE,
            'callback'            => $callback,
            'permission_callback' => $permission ? $permission : '__return_true',
        ];
        if (!\is_null($validation)) {
            $args['args'] = $validation;
        }
        static::register(
            $route,
            [$args]
        );
    }

    /**
     * Registers api route
     *
     * @param string       $route      api route
     * @param array|string $callback   callback function
     * @param array|string $permission permission callback function
     * @param array        $validation validation
     *
     * @return null
     */
    public static function post($route, $callback, $permission = null, $validation = null)
    {
        $args = [
            'methods'             => self::CREATABLE,
            'callback'            => $callback,
            'permission_callback' => $permission ? $permission : '__return_true',
        ];
        if (!\is_null($validation)) {
            $args['args'] = $validation;
        }
        static::register(
            $route,
            [$args]
        );
    }

    /**
     * Registers api route
     *
     * @param array        $method     request methods
     * @param string       $route      api route
     * @param array|string $callback   callback function
     * @param array|string $permission permission callback function
     * @param array        $validation validation
     *
     * @return null
     */
    public static function match($method, $route, $callback, $permission = null, $validation = null)
    {
        $args = [];
        foreach ($method as $k => $m) {
            $arg = [
                'methods'             => self::getMethod($m),
                'callback'            => isset($callback[$k]) && \is_array($callback[$k]) ? $callback[$k] : $callback,
                'permission_callback' => $permission ? (isset($permission[$k]) && \is_array($permission[$k]) ? $permission[$k] : $permission) : '__return_true',
            ];
            if (!\is_null($validation)) {
                $arg['args'] = $validation;
            }
            $args[] = $arg;
        }
        static::register(
            $route,
            $args
        );
    }

    public static function getMethod($method)
    {
        switch (strtolower($method)) {
            case 'get':
                return self::READABLE;
            case 'post':
                return self::CREATABLE;
            case 'put':
                return self::EDITABLE;
            case 'delete':
                return self::DELETABLE;
            default:
                return self::READABLE;
        }
    }
}