![]() 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/cartforge.co/vendor/magento/module-webapi/Controller/Rest/Router/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Webapi\Controller\Rest\Router; use Magento\Framework\App\RequestInterface as Request; use Magento\Framework\App\RouterInterface; /** * Route to services available via REST API. */ class Route implements RouterInterface { /** * @var string */ protected $serviceClass; /** * @var string */ protected $serviceMethod; /** * @var boolean */ protected $secure; /** * @var array */ protected $aclResources = []; /** * @var array */ protected $parameters = []; /** * @var array */ protected $variables = []; /** * @var string */ protected $route; /** * @var int|null */ private $inputArraySizeLimit; /** * @param string $route */ public function __construct($route = '') { $this->route = $route !== null ? trim($route, '/') : ''; } /** * Split route by parts and variables * * @return array */ protected function getRouteParts() { $result = []; $routeParts = explode('/', $this->route ?? ''); foreach ($routeParts as $key => $value) { if ($this->isVariable((string)$value)) { $this->variables[$key] = substr($value, 1); $value = null; } $result[$key] = $value; } return $result; } /** * Check if current route part is a name of variable * * @param string $value * @return bool */ protected function isVariable($value) { if (substr($value, 0, 1) == ':' && substr($value, 1, 1) != ':') { return true; } return false; } /** * Retrieve unified requested path * * @param string $path * @return array */ protected function getPathParts($path) { return explode('/', trim($path, '/')); } /** * Check if current route matches the requested path * * @param Request $request * @return array|bool */ public function match(Request $request) { /** @var \Magento\Framework\Webapi\Rest\Request $request */ $pathParts = $this->getPathParts($request->getPathInfo()); $routeParts = $this->getRouteParts(); if (count($pathParts) <> count($routeParts)) { return false; } $result = []; foreach ($pathParts as $key => $value) { if (!array_key_exists($key, $routeParts)) { return false; } $variable = isset($this->variables[$key]) ? $this->variables[$key] : null; if ($variable) { $result[$variable] = urldecode($pathParts[$key]); } else { if ($value != $routeParts[$key]) { return false; } } } return $result; } /** * Set service class. * * @param string $serviceClass * @return $this */ public function setServiceClass($serviceClass) { $this->serviceClass = $serviceClass; return $this; } /** * Get service class. * * @return string */ public function getServiceClass() { return $this->serviceClass; } /** * Set service method name. * * @param string $serviceMethod * @return $this */ public function setServiceMethod($serviceMethod) { $this->serviceMethod = $serviceMethod; return $this; } /** * Get service method name. * * @return string */ public function getServiceMethod() { return $this->serviceMethod; } /** * Set if the route is secure * * @param boolean $secure * @return $this */ public function setSecure($secure) { $this->secure = $secure; return $this; } /** * Returns true if the route is secure * * @return boolean */ public function isSecure() { return $this->secure; } /** * Set ACL resources list. * * @param array $aclResources * @return $this */ public function setAclResources($aclResources) { $this->aclResources = $aclResources; return $this; } /** * Get ACL resources list. * * @return array */ public function getAclResources() { return $this->aclResources; } /** * Set parameters list. * * @param array $parameters * @return $this */ public function setParameters($parameters) { $this->parameters = $parameters; return $this; } /** * Get parameters list. * * @return array */ public function getParameters() { return $this->parameters; } /** * Get route path. * * @return string */ public function getRoutePath() { return $this->route; } /** * Get array size limit of input data * * @return int|null */ public function getInputArraySizeLimit(): ?int { return $this->inputArraySizeLimit; } /** * Set array size limit of input data * * @param int|null $limit */ public function setInputArraySizeLimit(?int $limit): void { $this->inputArraySizeLimit = $limit; } }