private function filterHeaders(array $originalHeaders)
{
$headerNames = $headers = [];
foreach ($originalHeaders as $header => $value) {
if (!is_string($header)) {
throw new InvalidArgumentException(sprintf('Invalid header name; expected non-empty string, received %s', gettype($header)));
}
if (!is_array($value) && !is_string($value) && !is_numeric($value)) {
throw new InvalidArgumentException(sprintf('Invalid header value type; expected number, string, or array; received %s', is_object($value) ? get_class($value) : gettype($value)));
}
if (is_array($value)) {
array_walk($value, function ($item) {
if (!is_string($item) && !is_numeric($item)) {
throw new InvalidArgumentException(sprintf('Invalid header value type; expected number, string, or array; received %s', is_object($item) ? get_class($item) : gettype($item)));
}
});
}
if (!is_array($value)) {
$value = [$value];
}
$headerNames[strtolower($header)] = $header;
$headers[$header] = $value;
}
return [$headerNames, $headers];
}