protected function WebTestBase::curlHeaderCallback in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/simpletest/src/WebTestBase.php \Drupal\simpletest\WebTestBase::curlHeaderCallback()
Reads headers and registers errors received from the tested site.
Parameters
$curlHandler: The cURL handler.
$header: An header.
See also
File
- core/
modules/ simpletest/ src/ WebTestBase.php, line 1438 - Contains \Drupal\simpletest\WebTestBase.
Class
- WebTestBase
- Test case for typical Drupal tests.
Namespace
Drupal\simpletestCode
protected function curlHeaderCallback($curlHandler, $header) {
// Header fields can be extended over multiple lines by preceding each
// extra line with at least one SP or HT. They should be joined on receive.
// Details are in RFC2616 section 4.
if ($header[0] == ' ' || $header[0] == "\t") {
// Normalize whitespace between chucks.
$this->headers[] = array_pop($this->headers) . ' ' . trim($header);
}
else {
$this->headers[] = $header;
}
// Errors are being sent via X-Drupal-Assertion-* headers,
// generated by _drupal_log_error() in the exact form required
// by \Drupal\simpletest\WebTestBase::error().
if (preg_match('/^X-Drupal-Assertion-[0-9]+: (.*)$/', $header, $matches)) {
// Call \Drupal\simpletest\WebTestBase::error() with the parameters from
// the header.
call_user_func_array(array(
&$this,
'error',
), unserialize(urldecode($matches[1])));
}
// Save cookies.
if (preg_match('/^Set-Cookie: ([^=]+)=(.+)/', $header, $matches)) {
$name = $matches[1];
$parts = array_map('trim', explode(';', $matches[2]));
$value = array_shift($parts);
$this->cookies[$name] = array(
'value' => $value,
'secure' => in_array('secure', $parts),
);
if ($name === $this
->getSessionName()) {
if ($value != 'deleted') {
$this->sessionId = $value;
}
else {
$this->sessionId = NULL;
}
}
}
// This is required by cURL.
return strlen($header);
}