aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs/Web/HTTPHeaders.php
blob: 902d637f73faeb32adff2bb9ba12549eb2933433 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?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(isset($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(isset($this->in_progress['k'])) {
				$this->parsed[] = [ $this->in_progress['k'] => $this->in_progress['v'] ];
				$this->in_progress = [];
			}
		}
	}

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

	function fetcharr() {
		$ret = [];
		if($this->parsed) {
			foreach($this->parsed as $x) {
				foreach($x as $y => $z) {
					$ret[$y] = $z;
				}
			}
		}
		return $ret;
	}


}