web/lib/Zend/Service/Rackspace/Files/Object.php
changeset 808 6b6c2214f778
child 1230 68c69c656a2c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/Zend/Service/Rackspace/Files/Object.php	Thu Mar 21 19:52:38 2013 +0100
@@ -0,0 +1,271 @@
+<?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_Object
+{
+    /**
+     * The service that has created the object
+     *
+     * @var Zend_Service_Rackspace_Files
+     */
+    protected $service;
+    /**
+     * Name of the object
+     *
+     * @var string
+     */
+    protected $name;
+    /**
+     * MD5 value of the object's content
+     *
+     * @var string
+     */
+    protected $hash;
+    /**
+     * Size in bytes of the object's content
+     *
+     * @var integer
+     */
+    protected $size;
+    /**
+     * Content type of the object's content
+     *
+     * @var string
+     */
+    protected $contentType;
+    /**
+     * Date of the last modified of the object
+     *
+     * @var string
+     */
+    protected $lastModified;
+    /**
+     * Object content
+     *
+     * @var string
+     */
+    protected $content;
+    /**
+     * Name of the container where the object is stored
+     *
+     * @var string
+     */
+    protected $container;
+    /**
+     * Constructor
+     * 
+     * You must pass the Zend_Service_Rackspace_Files object of the caller and an associative
+     * array with the keys "name", "container", "hash", "bytes", "content_type",
+     * "last_modified", "file" where:
+     * name= name of the object
+     * container= name of the container where the object is stored
+     * hash= the MD5 of the object's content
+     * bytes= size in bytes of the object's content
+     * content_type= content type of the object's content
+     * last_modified= date of the last modified of the object
+     * content= content of the object
+     * 
+     * @param Zend_Service_Rackspace_Files $service
+     * @param array $data 
+     */
+    public function __construct($service,$data)
+    {
+        if (!($service instanceof Zend_Service_Rackspace_Files) || !is_array($data)) {
+            require_once 'Zend/Service/Rackspace/Files/Exception.php';
+            throw new Zend_Service_Rackspace_Files_Exception("You must pass a RackspaceFiles and an array");
+        }
+        if (!array_key_exists('name', $data)) {
+            require_once 'Zend/Service/Rackspace/Files/Exception.php';
+            throw new Zend_Service_Rackspace_Files_Exception("You must pass the name of the object in the array (name)");
+        }
+        if (!array_key_exists('container', $data)) {
+            require_once 'Zend/Service/Rackspace/Files/Exception.php';
+            throw new Zend_Service_Rackspace_Files_Exception("You must pass the container of the object in the array (container)");
+        }
+        if (!array_key_exists('hash', $data)) {
+            require_once 'Zend/Service/Rackspace/Files/Exception.php';
+            throw new Zend_Service_Rackspace_Files_Exception("You must pass the hash of the object in the array (hash)");
+        }
+        if (!array_key_exists('bytes', $data)) {
+            require_once 'Zend/Service/Rackspace/Files/Exception.php';
+            throw new Zend_Service_Rackspace_Files_Exception("You must pass the byte size of the object in the array (bytes)");
+        }
+        if (!array_key_exists('content_type', $data)) {
+            require_once 'Zend/Service/Rackspace/Files/Exception.php';
+            throw new Zend_Service_Rackspace_Files_Exception("You must pass the content type of the object in the array (content_type)");
+        }
+        if (!array_key_exists('last_modified', $data)) {
+            require_once 'Zend/Service/Rackspace/Files/Exception.php';
+            throw new Zend_Service_Rackspace_Files_Exception("You must pass the last modified data of the object in the array (last_modified)");
+        }
+        $this->name= $data['name'];
+        $this->container= $data['container'];
+        $this->hash= $data['hash'];
+        $this->size= $data['bytes'];
+        $this->contentType= $data['content_type'];
+        $this->lastModified= $data['last_modified'];
+        if (!empty($data['content'])) {
+            $this->content= $data['content'];
+        }
+        $this->service= $service;
+    }
+    /**
+     * Get name
+     *
+     * @return string
+     */
+    public function getName() 
+    {
+        return $this->name;
+    }
+    /**
+     * Get the name of the container
+     *
+     * @return string
+     */
+    public function getContainer() 
+    {
+        return $this->container;
+    }
+    /**
+     * Get the MD5 of the object's content
+     *
+     * @return string|boolean
+     */
+    public function getHash() 
+    {
+        return $this->hash;
+    }
+    /**
+     * Get the size (in bytes) of the object's content
+     *
+     * @return integer|boolean
+     */
+    public function getSize() 
+    {
+        return $this->size;
+    }
+    /**
+     * Get the content type of the object's content
+     *
+     * @return string
+     */
+    public function getContentType() 
+    {
+        return $this->contentType;
+    }
+    /**
+     * Get the data of the last modified of the object
+     *
+     * @return string
+     */
+    public function getLastModified() 
+    {
+        return $this->lastModified;
+    }
+    /**
+     * Get the content of the object
+     *
+     * @return string
+     */
+    public function getContent() 
+    {
+        return $this->content;
+    }
+    /**
+     * Get the metadata of the object
+     * If you don't pass the $key it returns the entire array of metadata value
+     *
+     * @param  string $key
+     * @return string|array|boolean
+     */
+    public function getMetadata($key=null) 
+    {
+        $result= $this->service->getMetadataObject($this->container,$this->name);
+        if (!empty($result)) {
+            if (empty($key)) {
+                return $result['metadata'];
+            }
+            if (isset($result['metadata'][$key])) {
+                return $result['metadata'][$key];
+            }
+        }
+        return false;
+    }
+    /**
+     * Set the metadata value
+     * The old metadata values are replaced with the new one
+     * 
+     * @param array $metadata
+     * @return boolean
+     */
+    public function setMetadata($metadata) 
+    {
+        return $this->service->setMetadataObject($this->container,$this->name,$metadata);
+    }
+    /**
+     * Copy the object to another container
+     * You can add metadata information to the destination object, change the
+     * content_type and the name of the object
+     *
+     * @param  string $container_dest
+     * @param  string $name_dest
+     * @param  array $metadata
+     * @param  string $content_type
+     * @return boolean
+     */
+    public function copyTo($container_dest,$name_dest,$metadata=array(),$content_type=null) 
+    {
+        return $this->service->copyObject($this->container,$this->name,$container_dest,$name_dest,$metadata,$content_type);
+    }
+    /**
+     * Get the CDN URL of the object
+     *
+     * @return string
+     */
+    public function getCdnUrl() 
+    {
+        $result= $this->service->getInfoCdnContainer($this->container);
+        if ($result!==false) {
+            if ($result['cdn_enabled']) {
+                return $result['cdn_uri'].'/'.$this->name;
+            }
+        }
+        return false;
+    }
+    /**
+     * Get the CDN SSL URL of the object
+     *
+     * @return string
+     */
+    public function getCdnUrlSsl() 
+    {
+        $result= $this->service->getInfoCdnContainer($this->container);
+        if ($result!==false) {
+            if ($result['cdn_enabled']) {
+                return $result['cdn_uri_ssl'].'/'.$this->name;
+            }
+        }
+        return false;
+    }
+}