summaryrefslogtreecommitdiffstats
path: root/vendor/fguillot/picofeed/lib/PicoFeed/Client/HttpHeaders.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/fguillot/picofeed/lib/PicoFeed/Client/HttpHeaders.php')
m---------vendor/fguillot/picofeed0
-rw-r--r--vendor/fguillot/picofeed/lib/PicoFeed/Client/HttpHeaders.php79
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));
+ }
+}