/** * Constructor * * @param array $options * @return void */ public function __construct($options = array()) { if ($options instanceof Zend_Config) { $options = $options->toArray(); } if (empty($options)) { $options = array(); } if (!is_array($options)) { throw new InvalidArgumentException('Invalid options provided'); } if (isset($options[self::DOCUMENT_CLASS])) { $this->setDocumentClass($options[self::DOCUMENT_CLASS]); } if (isset($options[self::DOCUMENTSET_CLASS])) { $this->setDocumentSetClass($options[self::DOCUMENTSET_CLASS]); } if (isset($options[self::QUERY_CLASS])) { $this->setQueryClass($options[self::QUERY_CLASS]); } // Build Zend_Service_WindowsAzure_Storage_Blob instance if (!isset($options[self::HOST])) { $host = self::DEFAULT_HOST; } else { $host = $options[self::HOST]; } if (! isset($options[self::ACCOUNT_NAME])) { throw new InvalidArgumentException('No Windows Azure account name provided.'); } if (! isset($options[self::ACCOUNT_KEY])) { throw new InvalidArgumentException('No Windows Azure account key provided.'); } // TODO: support $usePathStyleUri and $retryPolicy try { $this->_storageClient = new Zend\Service\WindowsAzure\Storage\Table( $host, $options[self::ACCOUNT_NAME], $options[self::ACCOUNT_KEY]); // Parse other options if (! empty($options[self::PROXY_HOST])) { $proxyHost = $options[self::PROXY_HOST]; $proxyPort = isset($options[self::PROXY_PORT]) ? $options[self::PROXY_PORT] : 8080; $proxyCredentials = isset($options[self::PROXY_CREDENTIALS]) ? $options[self::PROXY_CREDENTIALS] : ''; $this->_storageClient->setProxy(true, $proxyHost, $proxyPort, $proxyCredentials); } if (isset($options[self::HTTP_ADAPTER])) { $this->_storageClient->setHttpClientChannel($options[self::HTTP_ADAPTER]); } } catch(Zend_Service_WindowsAzure_Exception $e) { throw new Zend_Cloud_DocumentService_Exception('Error on document service creation: '.$e->getMessage(), $e->getCode(), $e); } }