Esempio n. 1
0
 /**
  * Test set Azure values
  */
 public function testSetAzureValues()
 {
     $values = array('PartitionKey' => 'partition1', 'RowKey' => '000001', 'Name' => 'Maarten', 'Age' => 25, 'Visible' => true);
     $target = new Zend_Service_WindowsAzure_Storage_DynamicTableEntity();
     $target->setAzureValues($values);
     $target->setAzurePropertyType('Age', 'Edm.Int32');
     $this->assertEquals('partition1', $target->getPartitionKey());
     $this->assertEquals('000001', $target->getRowKey());
     $this->assertEquals('Maarten', $target->Name);
     $this->assertEquals(25, $target->Age);
     $this->assertEquals('Edm.Int32', $target->getAzurePropertyType('Age'));
     $this->assertEquals(true, $target->Visible);
 }
Esempio n. 2
0
 /**
  * Delete document.
  *
  * @param  mixed  $document Document ID or Document object.
  * @param  array  $options
  * @return void
  */
 public function deleteDocument($collectionName, $documentId, $options = null)
 {
     if ($documentId instanceof Zend_Cloud_DocumentService_Document) {
         $documentId = $documentId->getId();
     }
     $documentId = $this->_validateDocumentId($documentId, $collectionName);
     try {
         $entity = new Zend_Service_WindowsAzure_Storage_DynamicTableEntity($documentId[0], $documentId[1]);
         if (isset($options[self::VERIFY_ETAG])) {
             $entity->setEtag($options[self::VERIFY_ETAG]);
         }
         $this->_storageClient->deleteEntity($collectionName, $entity, isset($options[self::VERIFY_ETAG]));
     } catch (Zend_Service_WindowsAzure_Exception $e) {
         if (strpos($e->getMessage(), "does not exist") === false) {
             throw new Zend_Cloud_DocumentService_Exception('Error on document deletion: ' . $e->getMessage(), $e->getCode(), $e);
         }
     }
 }
Esempio n. 3
0
 /**
  * Write a specific session
  * 
  * @param int $id Session Id
  * @param string $serializedData Serialized PHP object
  * @throws Exception
  */
 public function write($id, $serializedData)
 {
     // Encode data
     $serializedData = base64_encode(serialize($serializedData));
     if (strlen($serializedData) >= self::MAX_TS_PROPERTY_SIZE && $this->_storageType == self::STORAGE_TYPE_TABLE) {
         throw new Zend_Service_WindowsAzure_Exception('Session data exceeds the maximum allowed size of ' . self::MAX_TS_PROPERTY_SIZE . ' bytes that can be stored using table storage. Consider switching to a blob storage back-end or try reducing session data size.');
     }
     // Store data
     if ($this->_storageType == self::STORAGE_TYPE_TABLE) {
         // In table storage
         $sessionRecord = new Zend_Service_WindowsAzure_Storage_DynamicTableEntity($this->_sessionContainerPartition, $id);
         $sessionRecord->sessionExpires = time();
         $sessionRecord->serializedData = $serializedData;
         $sessionRecord->setAzurePropertyType('sessionExpires', 'Edm.Int32');
         try {
             $this->_storage->updateEntity($this->_sessionContainer, $sessionRecord);
         } catch (Zend_Service_WindowsAzure_Exception $unknownRecord) {
             $this->_storage->insertEntity($this->_sessionContainer, $sessionRecord);
         }
     } else {
         if ($this->_storageType == self::STORAGE_TYPE_BLOB) {
             // In blob storage
             $this->_storage->putBlobData($this->_sessionContainer, $this->_sessionContainerPartition . '/' . $id, $serializedData, array('sessionexpires' => time()));
         }
     }
 }
Esempio n. 4
0
 /**
  * Write a specific session
  *
  * @param int $id Session Id
  * @param string $serializedData Serialized PHP object
  */
 public function write($id, $serializedData)
 {
     $sessionRecord = new Zend_Service_WindowsAzure_Storage_DynamicTableEntity($this->_sessionTablePartition, $id);
     $sessionRecord->sessionExpires = time();
     $sessionRecord->serializedData = base64_encode($serializedData);
     $sessionRecord->setAzurePropertyType('sessionExpires', 'Edm.Int32');
     try {
         $this->_tableStorage->updateEntity($this->_sessionTable, $sessionRecord);
     } catch (Zend_Service_WindowsAzure_Exception $unknownRecord) {
         $this->_tableStorage->insertEntity($this->_sessionTable, $sessionRecord);
     }
 }
Esempio n. 5
0
 /**
  * Update entity by adding or updating properties
  * 
  * @param string                              $tableName   Table name
  * @param Zend_Service_WindowsAzure_Storage_TableEntity $entity      Entity to update
  * @param boolean                             $verifyEtag  Verify etag of the entity (used for concurrency)
  * @param array                               $properties  Properties to merge. All properties will be used when omitted.
  * @throws Zend_Service_WindowsAzure_Exception
  */
 public function mergeEntity($tableName = '', Zend_Service_WindowsAzure_Storage_TableEntity $entity = null, $verifyEtag = false, $properties = array())
 {
     $mergeEntity = null;
     if (is_array($properties) && count($properties) > 0) {
         // Build a new object
         $mergeEntity = new Zend_Service_WindowsAzure_Storage_DynamicTableEntity($entity->getPartitionKey(), $entity->getRowKey());
         // Keep only values mentioned in $properties
         $azureValues = $entity->getAzureValues();
         foreach ($azureValues as $key => $value) {
             if (in_array($value->Name, $properties)) {
                 $mergeEntity->setAzureProperty($value->Name, $value->Value, $value->Type);
             }
         }
     } else {
         $mergeEntity = $entity;
     }
     // Ensure entity timestamp matches updated timestamp
     $entity->setTimestamp(new DateTime());
     return $this->_changeEntity(Zend_Http_Client::MERGE, $tableName, $mergeEntity, $verifyEtag);
 }