/** * {@inheritdoc} */ public function updateFromResponse(Response $response, $uri = null) { foreach ($response->getHeader('Set-Cookie', false) as $cookie) { $this->set(Cookie::fromString(urldecode($cookie), $uri)); } }
/** * Reads response meta tags to guess content-type charset. * * @param Response $response * * @return Response */ protected function filterResponse($response) { $contentType = $response->getHeader('Content-Type'); if (!$contentType || false === strpos($contentType, 'charset=')) { if (preg_match('/\\<meta[^\\>]+charset *= *["\']?([a-zA-Z\\-0-9]+)/i', $response->getContent(), $matches)) { $headers = $response->getHeaders(); $headers['Content-Type'] = $contentType . ';charset=' . $matches[1]; $response = new Response($response->getContent(), $response->getStatus(), $headers); } } return parent::filterResponse($response); }
public function getHeader($header, $first = true) { $value = parent::getHeader($header, $first); if ('Content-type' == ucwords(strtolower($header))) { $args = func_get_args(); if (isset($args[2]) && true === $args[2]) { return parent::getHeader($header, $first); } return Filter::replaceHeaderCharset($value); } return $value; }
public function testGetHeader() { $response = new Response('foo', 200, array('Content-Type' => 'text/html', 'Set-Cookie' => array('foo=bar', 'bar=foo'))); $this->assertEquals('text/html', $response->getHeader('Content-Type'), '->getHeader() returns a header of the response'); $this->assertEquals('text/html', $response->getHeader('content-type'), '->getHeader() returns a header of the response'); $this->assertEquals('text/html', $response->getHeader('content_type'), '->getHeader() returns a header of the response'); $this->assertEquals('foo=bar', $response->getHeader('Set-Cookie'), '->getHeader() returns the first header value'); $this->assertEquals(array('foo=bar', 'bar=foo'), $response->getHeader('Set-Cookie', false), '->getHeader() returns all header values if first is false'); $this->assertNull($response->getHeader('foo'), '->getHeader() returns null if the header is not defined'); $this->assertEquals(array(), $response->getHeader('foo', false), '->getHeader() returns an empty array if the header is not defined and first is set to false'); }