diff options
Diffstat (limited to 'vendor/fguillot/picofeed/lib/PicoFeed/Client/HttpHeaders.php')
m--------- | vendor/fguillot/picofeed | 0 | ||||
-rw-r--r-- | vendor/fguillot/picofeed/lib/PicoFeed/Client/HttpHeaders.php | 79 |
2 files changed, 79 insertions, 0 deletions
diff --git a/vendor/fguillot/picofeed b/vendor/fguillot/picofeed deleted file mode 160000 -Subproject 0a1d0d3950f7f047dc8fb1d80aa6296e15f306d diff --git a/vendor/fguillot/picofeed/lib/PicoFeed/Client/HttpHeaders.php b/vendor/fguillot/picofeed/lib/PicoFeed/Client/HttpHeaders.php new file mode 100644 index 000000000..cde8f757c --- /dev/null +++ b/vendor/fguillot/picofeed/lib/PicoFeed/Client/HttpHeaders.php @@ -0,0 +1,79 @@ +<?php + +namespace PicoFeed\Client; + +use ArrayAccess; +use PicoFeed\Logging\Logger; + +/** + * Class to handle HTTP headers case insensitivity + * + * @author Bernhard Posselt + * @author Frederic Guillot + * @package Client + */ +class HttpHeaders implements ArrayAccess +{ + private $headers = array(); + + public function __construct(array $headers) + { + foreach ($headers as $key => $value) { + $this->headers[strtolower($key)] = $value; + } + } + + public function offsetGet($offset) + { + return $this->headers[strtolower($offset)]; + } + + public function offsetSet($offset, $value) + { + $this->headers[strtolower($offset)] = $value; + } + + public function offsetExists($offset) + { + return isset($this->headers[strtolower($offset)]); + } + + public function offsetUnset($offset) + { + unset($this->headers[strtolower($offset)]); + } + + /** + * Parse HTTP headers + * + * @static + * @access public + * @param array $lines List of headers + * @return array + */ + public static function parse(array $lines) + { + $status = 200; + $headers = array(); + + foreach ($lines as $line) { + + if (strpos($line, 'HTTP') === 0) { + $status = (int) substr($line, 9, 3); + } + else if (strpos($line, ':') !== false) { + + @list($name, $value) = explode(': ', $line); + if ($value) $headers[trim($name)] = trim($value); + } + } + + Logger::setMessage(get_called_class().' HTTP status code: '.$status); + + foreach ($headers as $name => $value) { + Logger::setMessage(get_called_class().' HTTP header: '.$name.' => '.$value); + } + + return array($status, new self($headers)); + } +} |