Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/vendor/magento/module-webapi-async/Plugin/Rest/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/magento/module-webapi-async/Plugin/Rest/Config.php
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

declare(strict_types=1);

namespace Magento\WebapiAsync\Plugin\Rest;

use Magento\Framework\Exception\InputException;
use Magento\Framework\Webapi\Rest\Request;
use Magento\Webapi\Controller\Rest\Router\Route;
use Magento\Webapi\Model\Rest\Config as RestConfig;
use Magento\WebapiAsync\Model\ServiceConfig;

/**
 * Overrides the input array size limit for an asynchronous request
 */
class Config
{
    private const KEY_ROUTES = 'routes';

    private const ASYNC_PROCESSOR_PATH = "/\/async\/V\d\//";

    /**
     * @var ServiceConfig
     */
    public $serviceConfig;

    /**
     * @param ServiceConfig $serviceConfig
     */
    public function __construct(ServiceConfig $serviceConfig)
    {
        $this->serviceConfig = $serviceConfig;
    }

    /**
     * Overrides the rules for an asynchronous request
     *
     * @param RestConfig $restConfig
     * @param array $routes
     * @param Request $request
     * @return Route[]
     * @throws InputException
     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
     */
    public function afterGetRestRoutes(RestConfig $restConfig, array $routes, Request $request): array
    {
        $httpMethod = $request->getHttpMethod();
        if ($httpMethod === Request::HTTP_METHOD_GET || !$this->canProcess($request)) {
            return $routes;
        }

        $routeConfigs = $this->serviceConfig->getServices()[self::KEY_ROUTES] ?? [];

        /** @var Route $route */
        foreach ($routes as $route) {
            $inputArraySizeLimit = null;
            foreach ($routeConfigs as $routeConfig) {
                if (!isset($routeConfig[$httpMethod])
                    || false === strpos($routeConfig[$httpMethod], $route->getRoutePath())
                    || !isset($routeConfig[RestConfig::KEY_INPUT_ARRAY_SIZE_LIMIT])) {
                    continue;
                }
                $inputArraySizeLimit = $routeConfig[RestConfig::KEY_INPUT_ARRAY_SIZE_LIMIT];
                break;
            }
            $route->setInputArraySizeLimit($inputArraySizeLimit);
        }

        return $routes;
    }

    /**
     * Allow the process if using the asynchronous Webapi
     *
     * @param Request $request
     * @return bool
     */
    private function canProcess(Request $request): bool
    {
        return preg_match(self::ASYNC_PROCESSOR_PATH, $request->getUri()->getPath() ?? '') === 1;
    }
}

Spamworldpro Mini