/** * Explicitly sets the content of the request body * * In most cases, content is just a string representation of the request body. * In order to reduce memory consumption for uploads and other big data, it is * also possible to pass a stream resource. The easies way to convert a local file * into a stream resource is probably: $resource = fopen('file://path/to/file', 'rb'); * * @param string|resource $content The body content, for example arguments of a PUT request, or a stream resource * @return void * @api */ public function setContent($content) { if (is_resource($content) && get_resource_type($content) === 'stream' && stream_is_local($content)) { $streamMetaData = stream_get_meta_data($content); $this->headers->set('Content-Length', filesize($streamMetaData['uri'])); $this->headers->set('Content-Type', MediaTypes::getMediaTypeFromFilename($streamMetaData['uri'])); } parent::setContent($content); }
/** * @test */ public function cookieConvenienceMethodsUseMethodsOfHeadersObject() { $cookie = new Cookie('foo', 'bar'); $message = new Message(); $message->setCookie($cookie); $this->assertSame($cookie, $message->getCookie('foo')); $this->assertSame($cookie, $message->getHeaders()->getCookie('foo')); $this->assertSame(array('foo' => $cookie), $message->getCookies()); $this->assertTrue($message->hasCookie('foo')); $message->removeCookie('foo'); $this->assertFalse($message->hasCookie('foo')); }