Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bareos/bareos-webui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/zendframework/zend-mvc/src/Router/Http/Hostname.php')
-rw-r--r--vendor/zendframework/zend-mvc/src/Router/Http/Hostname.php330
1 files changed, 0 insertions, 330 deletions
diff --git a/vendor/zendframework/zend-mvc/src/Router/Http/Hostname.php b/vendor/zendframework/zend-mvc/src/Router/Http/Hostname.php
deleted file mode 100644
index 03b24ba..0000000
--- a/vendor/zendframework/zend-mvc/src/Router/Http/Hostname.php
+++ /dev/null
@@ -1,330 +0,0 @@
-<?php
-/**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
-
-namespace Zend\Mvc\Router\Http;
-
-use Traversable;
-use Zend\Mvc\Router\Exception;
-use Zend\Stdlib\ArrayUtils;
-use Zend\Stdlib\RequestInterface as Request;
-
-/**
- * Hostname route.
- */
-class Hostname implements RouteInterface
-{
- /**
- * Parts of the route.
- *
- * @var array
- */
- protected $parts;
-
- /**
- * Regex used for matching the route.
- *
- * @var string
- */
- protected $regex;
-
- /**
- * Map from regex groups to parameter names.
- *
- * @var array
- */
- protected $paramMap = array();
-
- /**
- * Default values.
- *
- * @var array
- */
- protected $defaults;
-
- /**
- * List of assembled parameters.
- *
- * @var array
- */
- protected $assembledParams = array();
-
- /**
- * Create a new hostname route.
- *
- * @param string $route
- * @param array $constraints
- * @param array $defaults
- */
- public function __construct($route, array $constraints = array(), array $defaults = array())
- {
- $this->defaults = $defaults;
- $this->parts = $this->parseRouteDefinition($route);
- $this->regex = $this->buildRegex($this->parts, $constraints);
- }
-
- /**
- * factory(): defined by RouteInterface interface.
- *
- * @see \Zend\Mvc\Router\RouteInterface::factory()
- * @param array|Traversable $options
- * @return Hostname
- * @throws Exception\InvalidArgumentException
- */
- public static function factory($options = array())
- {
- if ($options instanceof Traversable) {
- $options = ArrayUtils::iteratorToArray($options);
- } elseif (!is_array($options)) {
- throw new Exception\InvalidArgumentException(__METHOD__ . ' expects an array or Traversable set of options');
- }
-
- if (!isset($options['route'])) {
- throw new Exception\InvalidArgumentException('Missing "route" in options array');
- }
-
- if (!isset($options['constraints'])) {
- $options['constraints'] = array();
- }
-
- if (!isset($options['defaults'])) {
- $options['defaults'] = array();
- }
-
- return new static($options['route'], $options['constraints'], $options['defaults']);
- }
-
- /**
- * Parse a route definition.
- *
- * @param string $def
- * @return array
- * @throws Exception\RuntimeException
- */
- protected function parseRouteDefinition($def)
- {
- $currentPos = 0;
- $length = strlen($def);
- $parts = array();
- $levelParts = array(&$parts);
- $level = 0;
-
- while ($currentPos < $length) {
- if (!preg_match('(\G(?P<literal>[a-z0-9-.]*)(?P<token>[:{\[\]]|$))', $def, $matches, 0, $currentPos)) {
- throw new Exception\RuntimeException('Matched hostname literal contains a disallowed character');
- }
-
- $currentPos += strlen($matches[0]);
-
- if (!empty($matches['literal'])) {
- $levelParts[$level][] = array('literal', $matches['literal']);
- }
-
- if ($matches['token'] === ':') {
- if (!preg_match('(\G(?P<name>[^:.{\[\]]+)(?:{(?P<delimiters>[^}]+)})?:?)', $def, $matches, 0, $currentPos)) {
- throw new Exception\RuntimeException('Found empty parameter name');
- }
-
- $levelParts[$level][] = array('parameter', $matches['name'], isset($matches['delimiters']) ? $matches['delimiters'] : null);
-
- $currentPos += strlen($matches[0]);
- } elseif ($matches['token'] === '[') {
- $levelParts[$level][] = array('optional', array());
- $levelParts[$level + 1] = &$levelParts[$level][count($levelParts[$level]) - 1][1];
-
- $level++;
- } elseif ($matches['token'] === ']') {
- unset($levelParts[$level]);
- $level--;
-
- if ($level < 0) {
- throw new Exception\RuntimeException('Found closing bracket without matching opening bracket');
- }
- } else {
- break;
- }
- }
-
- if ($level > 0) {
- throw new Exception\RuntimeException('Found unbalanced brackets');
- }
-
- return $parts;
- }
-
- /**
- * Build the matching regex from parsed parts.
- *
- * @param array $parts
- * @param array $constraints
- * @param int $groupIndex
- * @return string
- * @throws Exception\RuntimeException
- */
- protected function buildRegex(array $parts, array $constraints, &$groupIndex = 1)
- {
- $regex = '';
-
- foreach ($parts as $part) {
- switch ($part[0]) {
- case 'literal':
- $regex .= preg_quote($part[1]);
- break;
-
- case 'parameter':
- $groupName = '?P<param' . $groupIndex . '>';
-
- if (isset($constraints[$part[1]])) {
- $regex .= '(' . $groupName . $constraints[$part[1]] . ')';
- } elseif ($part[2] === null) {
- $regex .= '(' . $groupName . '[^.]+)';
- } else {
- $regex .= '(' . $groupName . '[^' . $part[2] . ']+)';
- }
-
- $this->paramMap['param' . $groupIndex++] = $part[1];
- break;
-
- case 'optional':
- $regex .= '(?:' . $this->buildRegex($part[1], $constraints, $groupIndex) . ')?';
- break;
- }
- }
-
- return $regex;
- }
-
- /**
- * Build host.
- *
- * @param array $parts
- * @param array $mergedParams
- * @param bool $isOptional
- * @return string
- * @throws Exception\RuntimeException
- * @throws Exception\InvalidArgumentException
- */
- protected function buildHost(array $parts, array $mergedParams, $isOptional)
- {
- $host = '';
- $skip = true;
- $skippable = false;
-
- foreach ($parts as $part) {
- switch ($part[0]) {
- case 'literal':
- $host .= $part[1];
- break;
-
- case 'parameter':
- $skippable = true;
-
- if (!isset($mergedParams[$part[1]])) {
- if (!$isOptional) {
- throw new Exception\InvalidArgumentException(sprintf('Missing parameter "%s"', $part[1]));
- }
-
- return '';
- } elseif (!$isOptional || !isset($this->defaults[$part[1]]) || $this->defaults[$part[1]] !== $mergedParams[$part[1]]) {
- $skip = false;
- }
-
- $host .= $mergedParams[$part[1]];
-
- $this->assembledParams[] = $part[1];
- break;
-
- case 'optional':
- $skippable = true;
- $optionalPart = $this->buildHost($part[1], $mergedParams, true);
-
- if ($optionalPart !== '') {
- $host .= $optionalPart;
- $skip = false;
- }
- break;
- }
- }
-
- if ($isOptional && $skippable && $skip) {
- return '';
- }
-
- return $host;
- }
-
- /**
- * match(): defined by RouteInterface interface.
- *
- * @see \Zend\Mvc\Router\RouteInterface::match()
- * @param Request $request
- * @return RouteMatch|null
- */
- public function match(Request $request)
- {
- if (!method_exists($request, 'getUri')) {
- return;
- }
-
- $uri = $request->getUri();
- $host = $uri->getHost();
-
- $result = preg_match('(^' . $this->regex . '$)', $host, $matches);
-
- if (!$result) {
- return;
- }
-
- $params = array();
-
- foreach ($this->paramMap as $index => $name) {
- if (isset($matches[$index]) && $matches[$index] !== '') {
- $params[$name] = $matches[$index];
- }
- }
-
- return new RouteMatch(array_merge($this->defaults, $params));
- }
-
- /**
- * assemble(): Defined by RouteInterface interface.
- *
- * @see \Zend\Mvc\Router\RouteInterface::assemble()
- * @param array $params
- * @param array $options
- * @return mixed
- */
- public function assemble(array $params = array(), array $options = array())
- {
- $this->assembledParams = array();
-
- if (isset($options['uri'])) {
- $host = $this->buildHost(
- $this->parts,
- array_merge($this->defaults, $params),
- false
- );
-
- $options['uri']->setHost($host);
- }
-
- // A hostname does not contribute to the path, thus nothing is returned.
- return '';
- }
-
- /**
- * getAssembledParams(): defined by RouteInterface interface.
- *
- * @see RouteInterface::getAssembledParams
- * @return array
- */
- public function getAssembledParams()
- {
- return $this->assembledParams;
- }
-}