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-http/src/Headers.php')
-rw-r--r--vendor/zendframework/zend-http/src/Headers.php472
1 files changed, 0 insertions, 472 deletions
diff --git a/vendor/zendframework/zend-http/src/Headers.php b/vendor/zendframework/zend-http/src/Headers.php
deleted file mode 100644
index 85aa555..0000000
--- a/vendor/zendframework/zend-http/src/Headers.php
+++ /dev/null
@@ -1,472 +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\Http;
-
-use ArrayIterator;
-use Countable;
-use Iterator;
-use Traversable;
-use Zend\Loader\PluginClassLocator;
-
-/**
- * Basic HTTP headers collection functionality
- * Handles aggregation of headers
- *
- * @see http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
- */
-class Headers implements Countable, Iterator
-{
- /**
- * @var PluginClassLocator
- */
- protected $pluginClassLoader = null;
-
- /**
- * @var array key names for $headers array
- */
- protected $headersKeys = array();
-
- /**
- * @var array Array of header array information or Header instances
- */
- protected $headers = array();
-
- /**
- * Populates headers from string representation
- *
- * Parses a string for headers, and aggregates them, in order, in the
- * current instance, primarily as strings until they are needed (they
- * will be lazy loaded)
- *
- * @param string $string
- * @return Headers
- * @throws Exception\RuntimeException
- */
- public static function fromString($string)
- {
- $headers = new static();
- $current = array();
- $emptyLine = 0;
-
- // iterate the header lines, some might be continuations
- foreach (explode("\r\n", $string) as $line) {
- // CRLF*2 is end of headers; an empty line by itself or between header lines
- // is an attempt at CRLF injection.
- if (preg_match('/^\s*$/', $line)) {
- // empty line indicates end of headers
- $emptyLine += 1;
- if ($emptyLine > 2) {
- throw new Exception\RuntimeException('Malformed header detected');
- }
- continue;
- }
-
- if ($emptyLine) {
- throw new Exception\RuntimeException('Malformed header detected');
- }
-
- // check if a header name is present
- if (preg_match('/^(?P<name>[^()><@,;:\"\\/\[\]?={} \t]+):.*$/', $line, $matches)) {
- if ($current) {
- // a header name was present, then store the current complete line
- $headers->headersKeys[] = static::createKey($current['name']);
- $headers->headers[] = $current;
- }
- $current = array(
- 'name' => $matches['name'],
- 'line' => trim($line)
- );
-
- continue;
- }
-
- if (preg_match("/^[ \t][^\r\n]*$/", $line, $matches)) {
- // continuation: append to current line
- $current['line'] .= trim($line);
- continue;
- }
-
- // Line does not match header format!
- throw new Exception\RuntimeException(sprintf(
- 'Line "%s" does not match header format!',
- $line
- ));
- }
- if ($current) {
- $headers->headersKeys[] = static::createKey($current['name']);
- $headers->headers[] = $current;
- }
- return $headers;
- }
-
- /**
- * Set an alternate implementation for the PluginClassLoader
- *
- * @param \Zend\Loader\PluginClassLocator $pluginClassLoader
- * @return Headers
- */
- public function setPluginClassLoader(PluginClassLocator $pluginClassLoader)
- {
- $this->pluginClassLoader = $pluginClassLoader;
- return $this;
- }
-
- /**
- * Return an instance of a PluginClassLocator, lazyload and inject map if necessary
- *
- * @return PluginClassLocator
- */
- public function getPluginClassLoader()
- {
- if ($this->pluginClassLoader === null) {
- $this->pluginClassLoader = new HeaderLoader();
- }
- return $this->pluginClassLoader;
- }
-
- /**
- * Add many headers at once
- *
- * Expects an array (or Traversable object) of type/value pairs.
- *
- * @param array|Traversable $headers
- * @return Headers
- * @throws Exception\InvalidArgumentException
- */
- public function addHeaders($headers)
- {
- if (!is_array($headers) && !$headers instanceof Traversable) {
- throw new Exception\InvalidArgumentException(sprintf(
- 'Expected array or Traversable; received "%s"',
- (is_object($headers) ? get_class($headers) : gettype($headers))
- ));
- }
-
- foreach ($headers as $name => $value) {
- if (is_int($name)) {
- if (is_string($value)) {
- $this->addHeaderLine($value);
- } elseif (is_array($value) && count($value) == 1) {
- $this->addHeaderLine(key($value), current($value));
- } elseif (is_array($value) && count($value) == 2) {
- $this->addHeaderLine($value[0], $value[1]);
- } elseif ($value instanceof Header\HeaderInterface) {
- $this->addHeader($value);
- }
- } elseif (is_string($name)) {
- $this->addHeaderLine($name, $value);
- }
- }
-
- return $this;
- }
-
- /**
- * Add a raw header line, either in name => value, or as a single string 'name: value'
- *
- * This method allows for lazy-loading in that the parsing and instantiation of Header object
- * will be delayed until they are retrieved by either get() or current()
- *
- * @throws Exception\InvalidArgumentException
- * @param string $headerFieldNameOrLine
- * @param string $fieldValue optional
- * @return Headers
- */
- public function addHeaderLine($headerFieldNameOrLine, $fieldValue = null)
- {
- $matches = null;
- if (preg_match('/^(?P<name>[^()><@,;:\"\\/\[\]?=}{ \t]+):.*$/', $headerFieldNameOrLine, $matches)
- && $fieldValue === null) {
- // is a header
- $headerName = $matches['name'];
- $headerKey = static::createKey($matches['name']);
- $line = $headerFieldNameOrLine;
- } elseif ($fieldValue === null) {
- throw new Exception\InvalidArgumentException('A field name was provided without a field value');
- } else {
- $headerName = $headerFieldNameOrLine;
- $headerKey = static::createKey($headerFieldNameOrLine);
- if (is_array($fieldValue)) {
- $fieldValue = implode(', ', $fieldValue);
- }
- $line = $headerFieldNameOrLine . ': ' . $fieldValue;
- }
-
- $this->headersKeys[] = $headerKey;
- $this->headers[] = array('name' => $headerName, 'line' => $line);
-
- return $this;
- }
-
- /**
- * Add a Header to this container, for raw values @see addHeaderLine() and addHeaders()
- *
- * @param Header\HeaderInterface $header
- * @return Headers
- */
- public function addHeader(Header\HeaderInterface $header)
- {
- $this->headersKeys[] = static::createKey($header->getFieldName());
- $this->headers[] = $header;
-
- return $this;
- }
-
- /**
- * Remove a Header from the container
- *
- * @param Header\HeaderInterface $header
- * @return bool
- */
- public function removeHeader(Header\HeaderInterface $header)
- {
- $index = array_search($header, $this->headers, true);
- if ($index !== false) {
- unset($this->headersKeys[$index]);
- unset($this->headers[$index]);
-
- return true;
- }
- return false;
- }
-
- /**
- * Clear all headers
- *
- * Removes all headers from queue
- *
- * @return Headers
- */
- public function clearHeaders()
- {
- $this->headers = $this->headersKeys = array();
- return $this;
- }
-
- /**
- * Get all headers of a certain name/type
- *
- * @param string $name
- * @return bool|Header\HeaderInterface|ArrayIterator
- */
- public function get($name)
- {
- $key = static::createKey($name);
- if (!in_array($key, $this->headersKeys)) {
- return false;
- }
-
- $class = ($this->getPluginClassLoader()->load($key)) ?: 'Zend\Http\Header\GenericHeader';
-
- if (in_array('Zend\Http\Header\MultipleHeaderInterface', class_implements($class, true))) {
- $headers = array();
- foreach (array_keys($this->headersKeys, $key) as $index) {
- if (is_array($this->headers[$index])) {
- $this->lazyLoadHeader($index);
- }
- }
- foreach (array_keys($this->headersKeys, $key) as $index) {
- $headers[] = $this->headers[$index];
- }
- return new ArrayIterator($headers);
- }
-
- $index = array_search($key, $this->headersKeys);
- if ($index === false) {
- return false;
- }
-
- if (is_array($this->headers[$index])) {
- return $this->lazyLoadHeader($index);
- }
- return $this->headers[$index];
- }
-
- /**
- * Test for existence of a type of header
- *
- * @param string $name
- * @return bool
- */
- public function has($name)
- {
- return (in_array(static::createKey($name), $this->headersKeys));
- }
-
- /**
- * Advance the pointer for this object as an iterator
- *
- * @return void
- */
- public function next()
- {
- next($this->headers);
- }
-
- /**
- * Return the current key for this object as an iterator
- *
- * @return mixed
- */
- public function key()
- {
- return (key($this->headers));
- }
-
- /**
- * Is this iterator still valid?
- *
- * @return bool
- */
- public function valid()
- {
- return (current($this->headers) !== false);
- }
-
- /**
- * Reset the internal pointer for this object as an iterator
- *
- * @return void
- */
- public function rewind()
- {
- reset($this->headers);
- }
-
- /**
- * Return the current value for this iterator, lazy loading it if need be
- *
- * @return array|Header\HeaderInterface
- */
- public function current()
- {
- $current = current($this->headers);
- if (is_array($current)) {
- $current = $this->lazyLoadHeader(key($this->headers));
- }
- return $current;
- }
-
- /**
- * Return the number of headers in this contain, if all headers have not been parsed, actual count could
- * increase if MultipleHeader objects exist in the Request/Response. If you need an exact count, iterate
- *
- * @return int count of currently known headers
- */
- public function count()
- {
- return count($this->headers);
- }
-
- /**
- * Render all headers at once
- *
- * This method handles the normal iteration of headers; it is up to the
- * concrete classes to prepend with the appropriate status/request line.
- *
- * @return string
- */
- public function toString()
- {
- $headers = '';
- foreach ($this->toArray() as $fieldName => $fieldValue) {
- if (is_array($fieldValue)) {
- // Handle multi-value headers
- foreach ($fieldValue as $value) {
- $headers .= $fieldName . ': ' . $value . "\r\n";
- }
- continue;
- }
- // Handle single-value headers
- $headers .= $fieldName . ': ' . $fieldValue . "\r\n";
- }
- return $headers;
- }
-
- /**
- * Return the headers container as an array
- *
- * @todo determine how to produce single line headers, if they are supported
- * @return array
- */
- public function toArray()
- {
- $headers = array();
- /* @var $header Header\HeaderInterface */
- foreach ($this->headers as $header) {
- if ($header instanceof Header\MultipleHeaderInterface) {
- $name = $header->getFieldName();
- if (!isset($headers[$name])) {
- $headers[$name] = array();
- }
- $headers[$name][] = $header->getFieldValue();
- } elseif ($header instanceof Header\HeaderInterface) {
- $headers[$header->getFieldName()] = $header->getFieldValue();
- } else {
- $matches = null;
- preg_match('/^(?P<name>[^()><@,;:\"\\/\[\]?=}{ \t]+):\s*(?P<value>.*)$/', $header['line'], $matches);
- if ($matches) {
- $headers[$matches['name']] = $matches['value'];
- }
- }
- }
- return $headers;
- }
-
- /**
- * By calling this, it will force parsing and loading of all headers, after this count() will be accurate
- *
- * @return bool
- */
- public function forceLoading()
- {
- foreach ($this as $item) {
- // $item should now be loaded
- }
- return true;
- }
-
- /**
- * @param $index
- * @return mixed|void
- */
- protected function lazyLoadHeader($index)
- {
- $current = $this->headers[$index];
-
- $key = $this->headersKeys[$index];
- /* @var $class Header\HeaderInterface */
- $class = ($this->getPluginClassLoader()->load($key)) ?: 'Zend\Http\Header\GenericHeader';
-
- $headers = $class::fromString($current['line']);
- if (is_array($headers)) {
- $this->headers[$index] = $current = array_shift($headers);
- foreach ($headers as $header) {
- $this->headersKeys[] = $key;
- $this->headers[] = $header;
- }
- return $current;
- }
-
- $this->headers[$index] = $current = $headers;
- return $current;
- }
-
- /**
- * Create array key from header name
- *
- * @param string $name
- * @return string
- */
- protected static function createKey($name)
- {
- return str_replace(array('-', '_', ' ', '.'), '', strtolower($name));
- }
-}