public function parseSiblings($response, $boundary, $vclock = '')
{
$siblings = [];
$parts = explode($boundary, $response);
foreach ($parts as $part) {
$headers = [Http::VCLOCK_KEY => $vclock];
$slice_point = 0;
$empties = 0;
$lines = preg_split('/\\n\\r|\\n|\\r/', trim($part));
foreach ($lines as $key => $line) {
if (strpos($line, ':')) {
$empties = 0;
list($key, $value) = explode(':', $line);
$value = trim($value);
if (!empty($value)) {
if (!isset($headers[$key])) {
$headers[$key] = $value;
} elseif (is_array($headers[$key])) {
$headers[$key] = array_merge($headers[$key], [$value]);
} else {
$headers[$key] = array_merge([$headers[$key]], [$value]);
}
}
} elseif ($line == '') {
// if we have two line breaks in a row, then we have finished headers
if ($empties) {
$slice_point = $key + 1;
break;
} else {
$empties++;
}
}
}
$data = implode(PHP_EOL, array_slice($lines, $slice_point));
$siblings[] = $this->parseObject($data, $headers);
}
return $siblings;
}