Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current  |   View Page History

<ac:macro ac:name="unmigrated-inline-wiki-markup"><ac:plain-text-body><![CDATA[

Zend Framework: Zend_Service_Rackspace_Files Component Proposal

Proposed Component Name Zend_Service_Rackspace_Files
Developer Notes
Proposers Enrico Zimuel
Zend Liaison TBD
Revision 1.0 - 2 May 2011: Initial Draft.
1.1 - 11 May 2011: Completed the prototype, added some use cases (wiki revision: 10)

Table of Contents

1. Overview

Zend\Service\Rackspace\Files is a class to manage the Cloud Files service of Rackspace.
The Cloud Files is a service to store any files in a cloud environment. A user can store an unlimited quantity of files and each file can be as large as 5 gigabytes. The files can be private or public. The private files can be accessed using the API of Rackspace. The public files are accessed using a CDN (Content Delivery Network).
Rackspace exposes a REST API to manage the Cloud Files.
Using the API features of Cloud Files you can:

  • Upload files programmatically for tight integration with your application
  • Enable Cloud Files CDN integration on any container for public distribution
  • Create Containers programmatically
  • Retrieve lists of containers and files

The Zend\Service\Rackspace\Files component will manage all these features.
The current version of the Cloud Files API is 1.0.

2. References

3. Component Requirements, Constraints, and Acceptance Criteria

  • This component will require a valid Rackspace account.
  • This component will implement full Cloud Files REST API.
  • This component will throw an Exception in case of a response error.

4. Dependencies on Other Framework Components

  • Zend\Http\Client

5. Theory of Operation

Because we would like to implement, in the future, other cloud services of Rackspace (Cloud Servers, Cloud Load Balancers) we propose to write an abstract class (Zend\Service\Rackspace\Rackspace) to share methods and properties common to all the future Rackspace services.
For instance, the authentication request of the Rackspace API is shared between all the cloud services and can be implemented in the abstract class.
Each subclass of Zend\Service\Rackspace will implement a specific service. This proposal is about the Zend\Service\Rackspace\Files service.

6. Milestones / Tasks

  • Milestone 1: Complete the proposal [DONE]
  • Milestone 2: Prototype of the Zend\Service\Rackspace\Files [DONE] (see the working in progress here ezimuel/zf2 github)
  • Milestone 3: Provide examples and Unit tests
  • Milestone 4: Write the documentation
  • Milestone 5: Propose an adapter for the Zend\Cloud\StorageService

7. Class Index

  • Zend\Service\Rackspace\Rackspace
  • Zend\Service\Rackspace\Exception
  • Zend\Service\Rackspace\Files
  • Zend\Service\Rackspace\Files\Object
  • Zend\Service\Rackspace\Files\ObjectList
  • Zend\Service\Rackspace\Files\Container
  • Zend\Service\Rackspace\Files\ContainerList

8. Use Cases


Get all the containers and the files for each container.


Add an object (file) in a container. The metadata array is optional.


Create a container, store an object, and delete it. The metadata array is optional.


Check if a container is CDN enabled. If not, try to enable it.


Copy an object (file) from a container to another. During the copy you can change the name of the object (file) and add metadata to it (optional).

9. Class Skeletons


Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.