/** * Move an item in the storage service to a given path. * * @TODO Support streams for those services that don't support natively * * @param string $sourcePath * @param string $destination path * @param array $options * @return void */ public function moveItem($sourcePath, $destinationPath, $options = array()) { try { $fullSourcePath = $this->_getFullPath($sourcePath, $options); $fullDestPath = $this->_getFullPath($destinationPath, $options); return $this->_s3->moveObject($fullSourcePath, $fullDestPath, empty($options[self::METADATA]) ? null : $options[self::METADATA]); } catch (Zend_Service_Amazon_S3_Exception $e) { throw new Zend_Cloud_StorageService_Exception('Error on move: ' . $e->getMessage(), $e->getCode(), $e); } }
/** * Move a file between two "storage" locations. * * @param string $source Original stored path. * @param string $dest Destination stored path. */ public function move($source, $dest) { $sourceObject = $this->_getObjectName($source); $destObject = $this->_getObjectName($dest); $status = $this->_s3->moveObject($sourceObject, $destObject); if (!$status) { throw new Omeka_Storage_Exception('Unable to move file.'); } _log("Omeka_Storage_Adapter_ZendS3: Moved '{$sourceObject}' to '{$destObject}'."); }
/** * @depends testCopyObject * @depends testRemoveObject */ public function testMoveObject() { $this->_amazon->createBucket($this->_bucket); $data = "testdata"; $this->_amazon->putObject($this->_bucket . "/zftest", $data); $info1 = $this->_amazon->getInfo($this->_bucket . "/zftest"); $this->_amazon->moveObject($this->_bucket . "/zftest", $this->_bucket . "/zftest2"); $this->assertFalse($this->_amazon->isObjectAvailable($this->_bucket . "/zftest")); $this->assertTrue($this->_amazon->isObjectAvailable($this->_bucket . "/zftest2")); $info2 = $this->_amazon->getInfo($this->_bucket . "/zftest2"); $this->assertEquals($info1['etag'], $info2['etag']); }