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.
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
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