Example #1
0
 /**
  * Creates block list from array of blocks.
  * 
  * @param array $array The blocks array.
  * 
  * @return BlockList
  */
 public static function create($array)
 {
     $blockList = new BlockList();
     foreach ($array as $value) {
         $blockList->addEntry($value->getBlockId(), $value->getType());
     }
     return $blockList;
 }
 /**
  * @covers WindowsAzure\Blob\Models\BlockList::toXml
  */
 public function testToXml()
 {
     // Setup
     $blockList = new BlockList();
     $blockList->addLatestEntry('1234');
     $blockList->addCommittedEntry('1239');
     $blockList->addLatestEntry('1236');
     $blockList->addCommittedEntry('1237');
     $blockList->addUncommittedEntry('1238');
     $blockList->addLatestEntry('1235');
     $blockList->addUncommittedEntry('1240');
     $expected = '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . '<BlockList>' . "\n" . ' <Latest>MTIzNA==</Latest>' . "\n" . ' <Committed>MTIzOQ==</Committed>' . "\n" . ' <Latest>MTIzNg==</Latest>' . "\n" . ' <Committed>MTIzNw==</Committed>' . "\n" . ' <Uncommitted>MTIzOA==</Uncommitted>' . "\n" . ' <Latest>MTIzNQ==</Latest>' . "\n" . ' <Uncommitted>MTI0MA==</Uncommitted>' . "\n" . '</BlockList>' . "\n";
     // Test
     $actual = $blockList->toXml(new XmlSerializer());
     // Assert
     $this->assertEquals($expected, $actual);
 }
Example #3
0
 /**
  * This method writes a blob by specifying the list of block IDs that make up the
  * blob. In order to be written as part of a blob, a block must have been 
  * successfully written to the server in a prior createBlobBlock method.
  * 
  * You can call Put Block List to update a blob by uploading only those blocks 
  * that have changed, then committing the new and existing blocks together. 
  * You can do this by specifying whether to commit a block from the committed 
  * block list or from the uncommitted block list, or to commit the most recently
  * uploaded version of the block, whichever list it may belong to.
  * 
  * @param string                         $container The container name.
  * @param string                         $blob      The blob name.
  * @param Models\BlockList|array         $blockList The block entries.
  * @param Models\CommitBlobBlocksOptions $options   The optional parameters.
  * 
  * @return CopyBlobResult
  * 
  * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179467.aspx 
  */
 public function commitBlobBlocks($container, $blob, $blockList, $options = null)
 {
     Validate::isString($container, 'container');
     Validate::isString($blob, 'blob');
     Validate::notNullOrEmpty($blob, 'blob');
     Validate::isTrue($blockList instanceof BlockList || is_array($blockList), sprintf(Resources::INVALID_PARAM_MSG, 'blockList', get_class(new BlockList())));
     $method = Resources::HTTP_PUT;
     $headers = array();
     $postParams = array();
     $queryParams = array();
     $path = $this->_createPath($container, $blob);
     $statusCode = Resources::STATUS_CREATED;
     $isArray = is_array($blockList);
     $blockList = $isArray ? BlockList::create($blockList) : $blockList;
     $body = $blockList->toXml($this->dataSerializer);
     if (is_null($options)) {
         $options = new CommitBlobBlocksOptions();
     }
     $blobContentType = $options->getBlobContentType();
     $blobContentEncoding = $options->getBlobContentEncoding();
     $blobContentLanguage = $options->getBlobContentLanguage();
     $blobContentMD5 = $options->getBlobContentMD5();
     $blobCacheControl = $options->getBlobCacheControl();
     $leaseId = $options->getLeaseId();
     $contentType = Resources::URL_ENCODED_CONTENT_TYPE;
     $metadata = $options->getMetadata();
     $headers = $this->generateMetadataHeaders($metadata);
     $headers = $this->addOptionalAccessConditionHeader($headers, $options->getAccessCondition());
     $this->addOptionalHeader($headers, Resources::X_MS_LEASE_ID, $leaseId);
     $this->addOptionalHeader($headers, Resources::X_MS_BLOB_CACHE_CONTROL, $blobCacheControl);
     $this->addOptionalHeader($headers, Resources::X_MS_BLOB_CONTENT_TYPE, $blobContentType);
     $this->addOptionalHeader($headers, Resources::X_MS_BLOB_CONTENT_ENCODING, $blobContentEncoding);
     $this->addOptionalHeader($headers, Resources::X_MS_BLOB_CONTENT_LANGUAGE, $blobContentLanguage);
     $this->addOptionalHeader($headers, Resources::X_MS_BLOB_CONTENT_MD5, $blobContentMD5);
     $this->addOptionalHeader($headers, Resources::CONTENT_TYPE, $contentType);
     $this->addOptionalQueryParam($queryParams, Resources::QP_TIMEOUT, $options->getTimeout());
     $this->addOptionalQueryParam($queryParams, Resources::QP_COMP, 'blocklist');
     return $this->send($method, $headers, $queryParams, $postParams, $path, $statusCode, $body);
 }
 /**
  * @covers WindowsAzure\Blob\BlobRestProxy::commitBlobBlocks
  * @covers WindowsAzure\Blob\Models\BlockList::toXml
  */
 public function testCommitBlobBlocks()
 {
     // Setup
     $name = 'commitblobblocks' . $this->createSuffix();
     $blob = 'myblob';
     $id1 = 'AAAAAA==';
     $id2 = 'ANAAAA==';
     $this->createContainer($name);
     $this->restProxy->createBlobBlock($name, $blob, $id1, 'Hello world');
     $this->restProxy->createBlobBlock($name, $blob, $id2, 'Hello world');
     $blockList = new BlockList();
     $blockList->addEntry($id1, BlobBlockType::LATEST_TYPE);
     $blockList->addEntry($id2, BlobBlockType::LATEST_TYPE);
     // Test
     $this->restProxy->commitBlobBlocks($name, $blob, $blockList);
     // Assert
     $result = $this->restProxy->listBlobs($name);
     $this->assertCount(1, $result->getBlobs());
 }
 /**
  * @covers WindowsAzure\Blob\BlobRestProxy::commitBlobBlocks
  * @covers WindowsAzure\Blob\BlobRestProxy::createBlobBlock
  * @covers WindowsAzure\Blob\BlobRestProxy::createBlockBlob
  * @covers WindowsAzure\Blob\BlobRestProxy::listBlobBlocks
  */
 public function testCommitBlobBlocksWorks()
 {
     // Act
     $container = self::$_test_container_for_blobs;
     $blob = 'test14';
     $blockId1 = '1fedcba';
     $blockId2 = '2abcdef';
     $blockId3 = '3zzzzzz';
     $this->restProxy->createBlockBlob($container, $blob, '');
     $this->restProxy->createBlobBlock($container, $blob, $blockId1, str_pad('', 256));
     $this->restProxy->createBlobBlock($container, $blob, $blockId2, str_pad('', 512));
     $this->restProxy->createBlobBlock($container, $blob, $blockId3, str_pad('', 195));
     $blockList = new BlockList();
     $blockList->addUncommittedEntry($blockId1);
     $blockList->addLatestEntry($blockId3);
     $this->restProxy->commitBlobBlocks($container, $blob, $blockList);
     $opts = new ListBlobBlocksOptions();
     $opts->setIncludeCommittedBlobs(true);
     $opts->setIncludeUncommittedBlobs(true);
     $result = $this->restProxy->listBlobBlocks($container, $blob, $opts);
     // Assert
     $this->assertNotNull($result, '$result');
     $this->assertNotNull($result->getLastModified(), '$result->getLastModified()');
     $this->assertNotNull($result->getETag(), '$result->getETag()');
     $this->assertEquals(256 + 195, $result->getContentLength(), '$result->getContentLength()');
     $this->assertNotNull($result->getCommittedBlocks(), '$result->getCommittedBlocks()');
     $this->assertEquals(2, count($result->getCommittedBlocks()), 'count($result->getCommittedBlocks())');
     $comblk = $result->getCommittedBlocks();
     $keys = array_keys($comblk);
     $this->assertEquals($blockId1, $keys[0], '$keys[0]');
     $this->assertEquals(256, $comblk[$keys[0]], '$comblk[$keys[0]]');
     $this->assertEquals($blockId3, $keys[1], '$keys[1]');
     $this->assertEquals(195, $comblk[$keys[1]], '$comblk[$keys[1]]');
     $this->assertNotNull($result->getUncommittedBlocks(), '$result->getUncommittedBlocks()');
     $this->assertEquals(0, count($result->getUncommittedBlocks()), 'count($result->getUncommittedBlocks())');
 }