Пример #1
0
 /**
  * @covers WindowsAzure\Blob\Models\BlockList::create
  */
 public function testCreate()
 {
     // Setup
     $block1 = new Block();
     $block1->setBlockId('123');
     $block1->setType(BlobBlockType::COMMITTED_TYPE);
     $block2 = new Block();
     $block2->setBlockId('223');
     $block2->setType(BlobBlockType::UNCOMMITTED_TYPE);
     $block3 = new Block();
     $block3->setBlockId('333');
     $block3->setType(BlobBlockType::LATEST_TYPE);
     // Test
     $blockList = BlockList::create(array($block1, $block2, $block3));
     // Assert
     $this->assertCount(3, $blockList->getEntries());
     $b1 = $blockList->getEntry($block1->getBlockId());
     $b2 = $blockList->getEntry($block2->getBlockId());
     $b3 = $blockList->getEntry($block3->getBlockId());
     $this->assertEquals($block1, $b1);
     $this->assertEquals($block2, $b2);
     $this->assertEquals($block3, $b3);
 }
Пример #2
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);
 }