web/lib/Zend/Service/Rackspace/Files/Container.php
changeset 808 6b6c2214f778
child 1230 68c69c656a2c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/Zend/Service/Rackspace/Files/Container.php	Thu Mar 21 19:52:38 2013 +0100
@@ -0,0 +1,329 @@
+<?php
+
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Service_Rackspace
+ * @subpackage Files
+ * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+require_once 'Zend/Service/Rackspace/Files.php';
+
+class Zend_Service_Rackspace_Files_Container
+{
+    const ERROR_PARAM_FILE_CONSTRUCT  = 'The Zend_Service_Rackspace_Files passed in construction is not valid';
+    const ERROR_PARAM_ARRAY_CONSTRUCT = 'The array passed in construction is not valid';
+    const ERROR_PARAM_NO_NAME         = 'The container name is empty';
+    /**
+     * @var string
+     */
+    protected $name;
+    /**
+     * Construct
+     *
+     * @param Zend_Service_Rackspace_Files $service
+     * @param string $name
+     */
+    public function __construct($service, $data)
+    {
+        if (!($service instanceof Zend_Service_Rackspace_Files)) {
+            require_once 'Zend/Service/Rackspace/Files/Exception.php';
+            throw new Zend_Service_Rackspace_Files_Exception(self::ERROR_PARAM_FILE_CONSTRUCT);
+        }
+        if (!is_array($data)) {
+            require_once 'Zend/Service/Rackspace/Files/Exception.php';
+            throw new Zend_Service_Rackspace_Files_Exception(self::ERROR_PARAM_ARRAY_CONSTRUCT);
+        }
+        if (!array_key_exists('name', $data)) {
+            require_once 'Zend/Service/Rackspace/Files/Exception.php';
+            throw new Zend_Service_Rackspace_Files_Exception(self::ERROR_PARAM_NO_NAME);
+        }    
+        $this->service = $service;
+        $this->name = $data['name'];
+    }
+    /**
+     * Get the name of the container
+     *
+     * @return string
+     */
+    public function getName()
+    {
+        return $this->name;
+    }
+    /**
+     * Get the size in bytes of the container
+     *
+     * @return integer|boolean
+     */
+    public function getSize()
+    {
+        $data = $this->getInfo();
+        if (isset($data['bytes'])) {
+            return $data['bytes'];
+        }
+        return false;
+    }
+    /**
+     * Get the total count of objects in the container
+     *
+     * @return integer|boolean
+     */
+    public function getObjectCount()
+    {
+        $data = $this->getInfo();
+        if (isset($data['count'])) {
+            return $data['count'];
+        }
+        return false;
+    }
+    /**
+     * Return true if the container is CDN enabled
+     * 
+     * @return boolean
+     */
+    public function isCdnEnabled()
+    {
+        $data = $this->getCdnInfo();
+        if (isset($data['cdn_enabled'])) {
+            return $data['cdn_enabled'];
+        }
+        return false;
+    }
+    /**
+     * Get the TTL of the CDN
+     * 
+     * @return integer|boolean 
+     */
+    public function getCdnTtl() 
+    {
+        $data = $this->getCdnInfo();
+        if (!isset($data['ttl'])) {
+            return $data['ttl'];
+        }
+        return false;
+    }
+    /**
+     * Return true if the log retention is enabled for the CDN
+     *
+     * @return boolean
+     */
+    public function isCdnLogEnabled()
+    {
+        $data = $this->getCdnInfo();
+        if (!isset($data['log_retention'])) {
+            return $data['log_retention'];
+        }
+        return false;
+    }
+    /**
+     * Get the CDN URI
+     * 
+     * @return string|boolean
+     */
+    public function getCdnUri()
+    {
+        $data = $this->getCdnInfo();
+        if (!isset($data['cdn_uri'])) {
+            return $data['cdn_uri'];
+        }
+        return false;
+    }
+    /**
+     * Get the CDN URI SSL
+     *
+     * @return string|boolean
+     */
+    public function getCdnUriSsl()
+    {
+        $data = $this->getCdnInfo();
+        if (!isset($data['cdn_uri_ssl'])) {
+            return $data['cdn_uri_ssl'];
+        }
+        return false;
+    }
+    /**
+     * Get the metadata of the container
+     *
+     * If $key is empty return the array of metadata
+     *
+     * @param string $key
+     * @return array|string|boolean
+     */
+    public function getMetadata($key=null)
+    {
+        $result = $this->service->getMetadataContainer($this->getName());
+        if (!empty($result) && is_array($result)) {
+            if (empty($key)) {
+                return $result['metadata'];
+            } else {
+                if (isset ($result['metadata'][$key])) {
+                    return $result['metadata'][$key];
+                }
+            }    
+        }    
+        return false;
+    }
+    /**
+     * Get the information of the container (total of objects, total size)
+     * 
+     * @return array|boolean 
+     */
+    public function getInfo()
+    {
+        $result = $this->service->getMetadataContainer($this->getName());
+        if (!empty($result) && is_array($result)) {
+           return $result;
+        }
+        return false;
+    }
+    /**
+     * Get all the object of the container
+     *
+     * @return Zend_Service_Rackspace_Files_ObjectList
+     */
+    public function getObjects()
+    {
+        return $this->service->getObjects($this->getName());
+    }
+    /**
+     * Get an object of the container
+     * 
+     * @param string $name
+     * @param array $headers
+     * @return Zend_Service_Rackspace_Files_Object|boolean
+     */
+    public function getObject($name, $headers=array())
+    {
+        return $this->service->getObject($this->getName(), $name, $headers);
+    }
+    /**
+     * Add an object in the container
+     *
+     * @param string $name
+     * @param string $file the content of the object
+     * @param array $metadata
+     * @return boolen
+     */
+    public function addObject($name, $file, $metadata=array())
+    {
+        return $this->service->storeObject($this->getName(), $name, $file, $metadata);
+    }
+    /**
+     * Delete an object in the container
+     *
+     * @param string $obj
+     * @return boolean
+     */
+    public function deleteObject($obj)
+    {
+        return $this->service->deleteObject($this->getName(), $obj);
+    }
+    /**
+     * Copy an object to another container
+     *
+     * @param string $obj_source
+     * @param string $container_dest
+     * @param string $obj_dest
+     * @param array $metadata
+     * @param string $content_type
+     * @return boolean
+     */
+    public function copyObject($obj_source, $container_dest, $obj_dest, $metadata=array(), $content_type=null)
+    {
+        return $this->service->copyObject($this->getName(), $obj_source, $container_dest, $obj_dest, $metadata, $content_type);
+    }
+    /**
+     * Get the metadata of an object in the container
+     *
+     * @param string $object
+     * @return array
+     */
+    public function getMetadataObject($object)
+    {
+        return $this->service->getMetadataObject($this->getName(),$object);
+    }
+    /**
+     * Set the metadata of an object in the container
+     *
+     * @param string $object
+     * @param array $metadata
+     * @return boolean
+     */
+    public function setMetadataObject($object,$metadata=array()) 
+    {
+        return $this->service->setMetadataObject($this->getName(),$object,$metadata);
+    }
+    /**
+     * Enable the CDN for the container
+     *
+     * @param integer $ttl
+     * @return array|boolean
+     */
+    public function enableCdn($ttl=Zend_Service_Rackspace_Files::CDN_TTL_MIN) 
+    {
+        return $this->service->enableCdnContainer($this->getName(),$ttl);
+    }
+    /**
+     * Disable the CDN for the container
+     * 
+     * @return boolean
+     */
+    public function disableCdn() 
+    {
+        $result = $this->service->updateCdnContainer($this->getName(),null,false);
+        return ($result!==false);
+    }
+    /**
+     * Change the TTL for the CDN container
+     *
+     * @param integer $ttl
+     * @return boolean
+     */
+    public function changeTtlCdn($ttl) 
+    {
+        $result =  $this->service->updateCdnContainer($this->getName(),$ttl);
+        return ($result!==false);
+    }
+    /**
+     * Enable the log retention for the CDN
+     *
+     * @return boolean
+     */
+    public function enableLogCdn() 
+    {
+        $result =  $this->service->updateCdnContainer($this->getName(),null,null,true);
+        return ($result!==false);
+    }
+    /**
+     * Disable the log retention for the CDN
+     *
+     * @return boolean
+     */
+    public function disableLogCdn() 
+    {
+        $result =  $this->service->updateCdnContainer($this->getName(),null,null,false);
+        return ($result!==false);
+    }
+    /**
+     * Get the CDN information
+     *
+     * @return array|boolean
+     */
+    public function getCdnInfo() 
+    {
+        return $this->service->getInfoCdnContainer($this->getName());
+    }
+}
\ No newline at end of file