aboutsummaryrefslogblamecommitdiffstats
path: root/Zotlabs/Web/HTTPHeaders.php
blob: 1e4c1bf84dfe5483b0bd0accfa70adf0183fef4c (plain) (tree)
1
2
3
4
5



                      
                   








































                                                                                                                         
<?php

namespace Zotlabs\Web;

class HTTPHeaders {

	private $in_progress = [];
	private $parsed = [];


	function __construct($headers) {

		$lines = explode("\n",str_replace("\r",'',$headers));
		if($lines) {
			foreach($lines as $line) {
				if(preg_match('/^\s+/',$line,$matches) && trim($line)) {
					if($this->in_progress['k']) {
						$this->in_progress['v'] .= ' ' . ltrim($line);
						continue;
					}
				}
				else {
					if($this->in_progress['k']) {
						$this->parsed[] = [ $this->in_progress['k'] => $this->in_progress['v'] ];
						$this->in_progress = [];
					}

					$this->in_progress['k'] = strtolower(substr($line,0,strpos($line,':')));
					$this->in_progress['v'] = ltrim(substr($line,strpos($line,':') + 1));
				}

			}
			if($this->in_progress['k']) {
				$this->parsed[] = [ $this->in_progress['k'] => $this->in_progress['v'] ];
				$this->in_progress = [];
			}
		}
	}

	function fetch() {
		return $this->parsed;
	}
}