/** * Sets the character set for this message. * * If the content type of this message is a text/* media type, the character * set in the respective Content-Type header will be updated by this method. * * @param string $charset A valid IANA character set identifier * @return self This message, for method chaining * @see http://www.iana.org/assignments/character-sets * @api */ public function setCharset($charset) { $this->charset = $charset; if ($this->headers->has('Content-Type')) { $contentType = $this->headers->get('Content-Type'); if (stripos($contentType, 'text/') === 0) { $matches = []; if (preg_match('/(?P<contenttype>.*); ?charset[^;]+(?P<extra>;.*)?/iu', $contentType, $matches)) { $contentType = $matches['contenttype']; } $contentType .= '; charset=' . $this->charset . (isset($matches['extra']) ? $matches['extra'] : ''); $this->setHeader('Content-Type', $contentType, true); } } return $this; }
/** * @dataProvider cacheControlHeaders * @test */ public function cacheControlHeaderPassedToSetIsParsedCorrectly($rawFieldValue, $renderedFieldValue) { $headers = new Headers(); $this->assertFalse($headers->has('Cache-Control')); $headers->set('Cache-Control', $rawFieldValue); $this->assertTrue($headers->has('Cache-Control')); $this->assertEquals($renderedFieldValue, $headers->get('Cache-Control')); }