public createBinaryFile ( BinaryFileCreateStruct $binaryFileCreateStruct ) | ||
$binaryFileCreateStruct | eZ\Publish\Core\IO\Values\BinaryFileCreateStruct |
public function createBinaryFile(BinaryFileCreateStruct $binaryFileCreateStruct)
{
if (empty($binaryFileCreateStruct->id) || !is_string($binaryFileCreateStruct->id)) {
throw new InvalidArgumentValue('id', $binaryFileCreateStruct->id, 'BinaryFileCreateStruct');
}
if (!is_int($binaryFileCreateStruct->size) || $binaryFileCreateStruct->size < 0) {
throw new InvalidArgumentValue('size', $binaryFileCreateStruct->size, 'BinaryFileCreateStruct');
}
if (!is_resource($binaryFileCreateStruct->inputStream)) {
throw new InvalidArgumentValue('inputStream', 'property is not a file resource', 'BinaryFileCreateStruct');
}
if (!isset($binaryFileCreateStruct->mimeType)) {
$buffer = fread($binaryFileCreateStruct->inputStream, $binaryFileCreateStruct->size);
$binaryFileCreateStruct->mimeType = $this->mimeTypeDetector->getFromBuffer($buffer);
unset($buffer);
}
$spiBinaryCreateStruct = $this->buildSPIBinaryFileCreateStructObject($binaryFileCreateStruct);
try {
$this->binarydataHandler->create($spiBinaryCreateStruct);
} catch (Exception $e) {
throw new IOException('An error occured creating binarydata', $e);
}
$spiBinaryFile = $this->metadataHandler->create($spiBinaryCreateStruct);
if (!isset($spiBinaryFile->uri)) {
$spiBinaryFile->uri = $this->binarydataHandler->getUri($spiBinaryFile->id);
}
return $this->buildDomainBinaryFileObject($spiBinaryFile);
}
/** * @covers \eZ\Publish\Core\IO\IOService::createBinaryFile * @covers \eZ\Publish\Core\IO\IOService::buildSPIBinaryFileCreateStructObject * @covers \eZ\Publish\Core\IO\IOService::buildDomainBinaryFileObject * @depends testNewBinaryCreateStructFromLocalFile */ public function testCreateBinaryFile(BinaryFileCreateStruct $createStruct) { $createStruct->id = "my/path.php"; $id = $this->getPrefixedUri($createStruct->id); $spiBinaryFile = new SPIBinaryFile(); $spiBinaryFile->id = $id; $spiBinaryFile->uri = $id; $spiBinaryFile->size = filesize(__FILE__); $spiBinaryFile->mimeType = 'text/x-php'; $this->binarydataHandlerMock->expects($this->once())->method('create')->with($this->callback(function ($subject) use($id) { if (!$subject instanceof \eZ\Publish\SPI\IO\BinaryFileCreateStruct) { return false; } return $subject->id == $id; })); $this->metadataHandlerMock->expects($this->once())->method('create')->with($this->callback($this->getSPIBinaryFileCreateStructCallback($id)))->will($this->returnValue($spiBinaryFile)); $binaryFile = $this->IOService->createBinaryFile($createStruct); self::assertInstanceOf('eZ\\Publish\\Core\\IO\\Values\\BinaryFile', $binaryFile); self::assertEquals($createStruct->id, $binaryFile->id); self::assertEquals($createStruct->size, $binaryFile->size); return $binaryFile; }