Zend_Service_Rackspace_Files es una clase que proporciona una
API sencilla para gestionar Rackspace
Cloud Files.
Para usar esta clase debe pasar el nombre de usuario y la clave de la API de Rackspace en la construcción de la clase.
$user = 'username'; $key = 'secret key'; $rackspace = new Zend_Service_Rackspace_Files($user,$key);
Un contenedor es un compartimento de almacenamiento para sus datos y proporciona una forma de organizar sus datos. Puede pensar en un contenedor como una carpeta en Windows® o un directorio en UNIX®. La diferencia principal entre un contenedor y estos otros conceptos de sistemas de archivos es que los contenedores no pueden anidarse. Sin embargo, puede crear un número ilimitado de contenedores dentro de su cuenta. Los datos deben almacenarse en un contenedor, por lo que debe tener al menos un contenedor definido en su cuenta antes de subir datos.
La única restricción en los nombres de contenedor es que no pueden contener una barra inclinada (/) y deben tener menos de 256 bytes de longitud (tenga en cuenta que la restricción de longitud se aplica al nombre usando el formato codificado en URL).
Los contenedores se gestionan usando la clase Zend_Service_Rackspace_Files_Container.
Un objeto (archivo) es la entidad básica de almacenamiento y cualquier metadato opcional que representa los archivos que almacena en el sistema Cloud Files. Cuando sube datos a Cloud Files, los datos se almacenan tal cual (sin compresión ni cifrado) y consisten en una ubicación (contenedor), el nombre del objeto, y cualquier metadato consistente en pares clave/valor. Por ejemplo, puede optar por almacenar una copia de seguridad de sus fotos digitales y organizarlas en álbumes. En este caso, cada objeto podría etiquetarse con metadatos como Album : Caribbean Cruise o Album : Aspen Ski Trip.
La única restricción en los nombres de objeto es que deben tener menos de 1024 bytes de longitud después de la codificación URL. Cloud Files tiene un límite en el tamaño de un único objeto subido; por defecto es 5 GB. Para los metadatos, no debería exceder los 90 pares clave/valor individuales para ningún objeto y la longitud total en bytes de todos los pares clave/valor no debería exceder 4KB (4096 bytes).
Los objetos se gestionan usando la clase Zend_Service_Rackspace_Files_Object.
Para crear un nuevo contenedor puede usar el método createContainer.
$container= $rackspace->createContainer('test');
if (!$rackspace->isSuccessful()) {
die('ERROR: '.$rackspace->getErrorMsg());
}
printf("Name: %s",$container->getName());
Este ejemplo crea un contenedor con el nombre test. El resultado de createContainer
es una nueva instancia de Zend_Service_Rackspace_Files_Container.
Para almacenar un objeto (archivo) en un contenedor puede usar el método storeObject.
$name= 'example.jpg';
$file= file_get_contents($name);
$metadata= array (
'foo' => 'bar'
);
$rackspace->storeObject('test',$name,$file,$metadata);
if ($rackspace->isSuccessful()) {
echo 'Object stored successfully';
} else {
printf("ERROR: %s",$rackspace->getErrorMsg());
}
Este ejemplo almacena una imagen example.jpg en el contenedor test con los metadatos especificados en el array $metadata.
Para eliminar un objeto (archivo) puede usar el método deleteObject.
$rackspace->deleteObject('test','example.jpg');
if ($rackspace->isSuccessful()) {
echo 'Object deleted successfully';
} else {
printf("ERROR: %s",$rackspace->getErrorMsg());
}
Este ejemplo elimina el objeto example.jpg en el contenedor test.
Para publicar un contenedor como CDN (Content Delivery Network) puede usar el método enableCdnContainer.
$cdnInfo= $rackspace->enableCdnContainer('test');
if ($rackspace->isSuccessful()) {
print_r($cdnInfo);
} else {
printf("ERROR: %s",$rackspace->getErrorMsg());
}
Este ejemplo publica el contenedor test como CDN. Si la operación tiene éxito devuelve un array asociativo con los siguientes valores:
cdn_uri, la url del contenedor CDN;
cdn_uri_ssl, la url ssl del contenedor CDN;
-
copyObject(string $container_source,string $obj_source,string $container_dest,string $obj_dest,$metadata=array(),string $content_type=null); -
Copia un objeto de un contenedor a otro. El resultado es true en caso de éxito y false en caso de error.
$container_source es el nombre del contenedor de origen.
$obj_source es el nombre del objeto de origen.
$container_dest es el nombre del contenedor de destino.
$obj_dest es el nombre del objeto de destino.
El array $metadata contiene la información de metadatos relacionada con el objeto de destino.
$content_type es el tipo de contenido opcional del objeto (archivo) de destino.
-
createContainer(string $container, $metadata=array()); -
Crea un contenedor. El resultado es una instancia de
Zend_Service_Rackspace_Files_Container. En caso de error el resultado es false.$container es el nombre del contenedor a crear.
El array $metadata contiene la información de metadatos relacionada con el contenedor.
-
deleteContainer(string $container); -
Elimina un contenedor. El resultado es true en caso de éxito y false en caso de error.
$container es el nombre del contenedor a eliminar.
-
deleteObject(string $container,string $object); -
Elimina un objeto en un contenedor específico. Devuelve true en caso de éxito, false en caso de error.
$container es el nombre del contenedor.
$object es el nombre del objeto a eliminar.
-
enableCdnContainer(string $container,integer $ttl=900); -
Publica un contenedor como CDN (Content Delivery Network). Devuelve un array asociativo que contiene la url CDN y la url SSL. En caso de error el resultado es false.
$container es el nombre del contenedor.
$ttl es el tiempo de vida para el contenido de la caché CDN. El valor predeterminado es 15 minutos (900 segundos). El TTL mínimo que puede establecerse es 15 minutos (900 segundos); el TTL máximo es 50 años (rango de 900 a 1577836800 segundos).
-
getCdnContainers($options=array()); -
Devuelve todos los contenedores CDN disponibles. El resultado es una instancia de
Zend_Service_Rackspace_Files_ContainerList. En caso de error el resultado es false.$options contiene los siguientes parámetros opcionales:
limit, para un valor entero n, limita el número de resultados a un máximo de n valores.
marker, dado un valor de cadena x, devuelve nombres de objeto de valor mayor que el marcador especificado.
-
getContainers($options=array()); -
Devuelve todos los contenedores disponibles. El resultado es una instancia de
Zend_Service_Rackspace_Files_ContainerListEn caso de error el resultado es false.$options contiene los siguientes parámetros opcionales:
limit, para un valor entero n, limita el número de resultados a un máximo de n valores.
marker, dado un valor de cadena x, devuelve nombres de objeto de valor mayor que el marcador especificado.
-
getContainer(string $container); -
Devuelve el contenedor especificado como instancia de
Zend_Service_Rackspace_Files_ContainerEn caso de error el resultado es false.$container es el nombre del contenedor.
-
getCountContainers(); Devuelve el recuento total de contenedores.
-
getCountObjects(); Devuelve el recuento de objetos contenidos en todos los contenedores.
-
getInfoCdnContainer(string $container); -
Obtiene la información de un contenedor CDN. El resultado es un array asociativo con toda la información CDN. En caso de error el resultado es false.
$container es el nombre del contenedor.
-
getInfoContainers(); -
Obtiene la información sobre todos los contenedores disponibles. Devuelve un array asociativo con los siguientes valores:
tot_containers, el número total de contenedores almacenados
size_containers, el tamaño total, en bytes, de todos los contenedores.
tot_objects, el número total de objetos (archivos) almacenados en todos los contenedores.
En caso de error el resultado es false.
-
getMetadataContainer(string $container); -
Obtiene la información de metadatos de un contenedor. El resultado es un array asociativo con todas las claves/valores de metadatos. En caso de error el resultado es false.
$container es el nombre del contenedor.
-
getMetadataObject(string $container, string $object); -
Obtiene la información de metadatos de un objeto. El resultado es un array asociativo con todas las claves/valores de metadatos. En caso de error el resultado es false.
$container es el nombre del contenedor.
$object es el nombre del objeto.
-
getObjects(string $container, $options=array()); -
Devuelve todos los objetos de un contenedor. El resultado es una instancia de
Zend_Service_Rackspace_Files_ObjectListEn caso de error el resultado es false.$container es el nombre del contenedor.
$options contiene los siguientes parámetros opcionales:
limit, para un valor entero n, limita el número de resultados a un máximo de n valores.
marker, dado un valor de cadena x, devuelve nombres de objeto de valor mayor que el marcador especificado.
prefix, para un valor de cadena x, hace que los resultados se limiten a nombres de objeto que empiecen con la subcadena x.
path, para un valor de cadena x, devuelve los nombres de objeto anidados en la ruta pseudo.
delimiter, para un carácter c, devuelve todos los nombres de objeto anidados en el contenedor (sin necesidad de objetos marcadores de directorio).
-
getObject(string $container, string $object, $headers=array()); -
Devuelve un objeto de un contenedor. El resultado es una instancia de
Zend_Service_Rackspace_Files_ObjectEn caso de error el resultado es false.$container es el nombre del contenedor.
$object es el nombre del objeto.
$headers contiene los siguientes parámetros opcionales (consulte el RFC-2616 para más información):
If-Match, un cliente que tiene una o más entidades obtenidas previamente del recurso puede verificar que una de esas entidades es la actual incluyendo una lista de sus etiquetas de entidad asociadas en el campo de cabecera If-Match.
If-None-Match, un cliente que tiene una o más entidades obtenidas previamente del recurso puede verificar que ninguna de esas entidades es la actual incluyendo una lista de sus etiquetas de entidad asociadas en el campo de cabecera If-None-Match.
If-Modified-Since, si la variante solicitada no ha sido modificada desde el momento especificado en este campo, no se devolverá ninguna entidad desde el servidor.
If-Unmodified-Since, si el recurso solicitado no ha sido modificado desde el momento especificado en este campo, el servidor DEBERÍA realizar la operación solicitada como si la cabecera If-Unmodified-Since no estuviera presente.
-
Range, Rackspace soporta un subconjunto de Range y no se ajusta a la especificación completa de RFC-2616. Soportamos especificar OFFSET-LENGTH donde OFFSET o LENGTH pueden ser opcionales (no ambos al mismo tiempo). Las siguientes son formas soportadas de la cabecera:
Range: bytes=-5, los últimos cinco bytes del objeto
Range: bytes=10-15, los cinco bytes tras un desplazamiento de 10 bytes
Range: bytes=32-, todos los datos tras los primeros 32 bytes del objeto
-
getSizeContainers(); Devuelve el tamaño, en bytes, de todos los contenedores.
-
setMetadataObject(string $container,string $object, array $metadata); -
Actualiza la información de metadatos del objeto (todos los metadatos previos serán eliminados). Devuelve true en caso de éxito, false en caso de error.
$container es el nombre del contenedor.
$object es el nombre del objeto a almacenar.
El array $metadata contiene la información de metadatos relacionada con el objeto.
-
storeObject(string $container,string $object,string $file,$metadata=array()); -
Almacena un objeto en un contenedor específico. Devuelve true en caso de éxito, false en caso de error.
$container es el nombre del contenedor.
$object es el nombre del objeto a almacenar.
$file es el contenido del objeto a almacenar.
El array $metadata contiene la información de metadatos relacionada con el objeto a almacenar.
-
updateCdnContainer(string $container,integer $ttl=null,$cdn_enabled=null,$log=null); -
Actualiza el atributo de un contenedor CDN. Devuelve un array asociativo que contiene la url CDN y la url SSL. En caso de error el resultado es false.
$container es el nombre del contenedor.
$ttl es el tiempo de vida para el contenido de la caché CDN. El valor predeterminado es 15 minutos (900 segundos). El TTL mínimo que puede establecerse es 15 minutos (900 segundos); el TTL máximo es 50 años (rango de 900 a 1577836800 segundos).
$cdn_enabled es el indicador para activar/desactivar la CDN. True activa, false desactiva.
$log activa o desactiva la retención de registros. True activa, false desactiva.
Ejemplo 64.109. Autenticación
Comprueba si el nombre de usuario y la clave son válidos para la autenticación de Rackspace.
$user = 'username';
$key = 'secret key';
$rackspace = new Zend_Service_Rackspace_Files($user,$key);
if ($rackspace->authenticate()) {
printf("Authenticated with token: %s",$rackspace->getToken());
} else {
printf("ERROR: %s",$rackspace->getErrorMsg());
}
Ejemplo 64.110. Obtener un objeto
Obtiene un archivo de imagen (example.gif) de la nube y lo muestra en el navegador
$user = 'username';
$key = 'secret key';
$rackspace = new Zend_Service_Rackspace_Files($user,$key);
$object= $rackspace->getObject('test','example.gif');
if (!$rackspace->isSuccessful()) {
die('ERROR: '.$rackspace->getErrorMsg());
}
header('Content-type: image/gif');
echo $object->getFile();
Ejemplo 64.111. Crear un contenedor con metadatos
Crea un contenedor (test) con información de metadatos ($metadata)
$user = 'username';
$key = 'secret key';
$rackspace = new Zend_Service_Rackspace_Files($user,$key);
$metadata= array (
'foo' => 'bar',
'foo2' => 'bar2',
);
$container= $rackspace->createContainer('test',$metadata);
if ($rackspace->isSuccessful()) {
echo 'Container created successfully';
}
Ejemplo 64.112. Obtener los metadatos de un contenedor
Obtiene los metadatos del contenedor test
$user = 'username';
$key = 'secret key';
$rackspace = new Zend_Service_Rackspace_Files($user, $key);
$container= $rackspace->getContainer('test');
if (!$rackspace->isSuccessful()) {
die('ERROR: ' . $rackspace->getErrorMsg());
}
$metadata= $container->getMetadata();
print_r($metadata);
Ejemplo 64.113. Almacenar un objeto en un contenedor
Almacena un objeto usando una instancia de Zend_Service_Rackspace_Files_Container
$user = 'username';
$key = 'secret key';
$rackspace = new Zend_Service_Rackspace_Files($user, $key);
$container= $rackspace->getContainer('test');
if (!$rackspace->isSuccessful()) {
die('ERROR: ' . $rackspace->getErrorMsg());
}
$file = file_get_contents('test.jpg');
$metadata = array (
'foo' => 'bar',
);
if ($container->addObject('test.jpg', $file, $metadata)) {
echo 'Object stored successfully';
}
Ejemplo 64.114. Comprobar si un contenedor tiene CDN habilitado
Comprueba si el contenedor test tiene CDN habilitado. Si no lo tiene, lo habilitamos.
$user = 'username';
$key = 'secret key';
$rackspace = new Zend_Service_Rackspace_Files($user, $key);
$container= $rackspace->getContainer('test');
if (!$rackspace->isSuccessful()) {
die('ERROR: ' . $rackspace->getErrorMsg());
}
if (!$container->isCdnEnabled()) {
if (!$container->enableCdn()) {
die('ERROR: ' . $rackspace->getErrorMsg());
}
}
printf(
"The container is CDN enabled with the following URLs:\n %s\n %s\n",
$container->getCdnUri(),
$container->getCdnUriSsl()
);