3 * @copyright Copyright (C) 2010-2021, the Friendica project
5 * @license GNU AGPL version 3 or any later version
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as
9 * published by the Free Software Foundation, either version 3 of the
10 * License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Affero General Public License for more details.
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 namespace Friendica\Util;
25 * Ported from Hubzilla: https://framagit.org/hubzilla/core/blob/master/Zotlabs/Web/HTTPHeaders.php
29 private $in_progress = [];
32 function __construct($headers)
34 $lines = explode("\n", str_replace("\r", '', $headers));
37 foreach ($lines as $line) {
38 if (preg_match('/^\s+/', $line, $matches) && trim($line)) {
39 if (!empty($this->in_progress['k'])) {
40 $this->in_progress['v'] .= ' ' . ltrim($line);
44 if (!empty($this->in_progress['k'])) {
45 $this->parsed[] = [$this->in_progress['k'] => $this->in_progress['v']];
46 $this->in_progress = [];
49 $this->in_progress['k'] = strtolower(substr($line, 0, strpos($line, ':')));
50 $this->in_progress['v'] = ltrim(substr($line, strpos($line, ':') + 1));
54 if (!empty($this->in_progress['k'])) {
55 $this->parsed[$this->in_progress['k']] = $this->in_progress['v'];
56 $this->in_progress = [];