summaryrefslogtreecommitdiff
path: root/vendor/miniflux/picofeed/lib/PicoFeed/Client/HttpHeaders.php
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2017-10-25 16:22:10 -0700
committerFrederic Guillot <fred@kanboard.net>2017-10-25 16:22:10 -0700
commit9e2b2a32fd0e967ad3184e9a5d091a29953acb91 (patch)
tree00822e24aa1110c73ca455a8d096ef296c008cbc /vendor/miniflux/picofeed/lib/PicoFeed/Client/HttpHeaders.php
parentc507c5416251c505cb3e088a03c6664bed73c812 (diff)
Include composer dependencies in repo
Diffstat (limited to 'vendor/miniflux/picofeed/lib/PicoFeed/Client/HttpHeaders.php')
-rw-r--r--vendor/miniflux/picofeed/lib/PicoFeed/Client/HttpHeaders.php79
1 files changed, 79 insertions, 0 deletions
diff --git a/vendor/miniflux/picofeed/lib/PicoFeed/Client/HttpHeaders.php b/vendor/miniflux/picofeed/lib/PicoFeed/Client/HttpHeaders.php
new file mode 100644
index 00000000..34b81399
--- /dev/null
+++ b/vendor/miniflux/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
+ */
+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->offsetExists($offset) ? $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
+ *
+ * @param array $lines List of headers
+ *
+ * @return array
+ */
+ public static function parse(array $lines)
+ {
+ $status = 0;
+ $headers = array();
+
+ foreach ($lines as $line) {
+ if (strpos($line, 'HTTP/1') === 0) {
+ $headers = array();
+ $status = (int) substr($line, 9, 3);
+ } elseif (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));
+ }
+}