/Service/Rackspace/Files/Object.php
PHP | 271 lines | 123 code | 2 blank | 146 comment | 16 complexity | dcace75149bc5c2aff93a31146f83471 MD5 | raw file
- <?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;
- }
- }