From ee50cd876649c663e620906dd028e0a982b066ae Mon Sep 17 00:00:00 2001 From: Luciano Mammino Date: Tue, 13 Aug 2013 11:34:55 +0200 Subject: [PATCH] Added support for azure blob storage (introduced here: https://github.com/KnpLabs/Gaufrette/pull/206) --- .../AzureBlobStorageAdapterFactory.php | 48 +++++++++++++++++++ README.markdown | 39 +++++++++++++++ Resources/config/adapter_factories.xml | 4 +- Resources/config/gaufrette.xml | 2 +- 4 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 DependencyInjection/Factory/AzureBlobStorageAdapterFactory.php diff --git a/DependencyInjection/Factory/AzureBlobStorageAdapterFactory.php b/DependencyInjection/Factory/AzureBlobStorageAdapterFactory.php new file mode 100644 index 0000000..6e88239 --- /dev/null +++ b/DependencyInjection/Factory/AzureBlobStorageAdapterFactory.php @@ -0,0 +1,48 @@ +setDefinition($id, new DefinitionDecorator('knp_gaufrette.adapter.azure_blob_storage')) + ->addArgument(new Reference($config['blob_proxy_factory_id'])) + ->addArgument($config['container_name']) + ->addArgument($config['create_container']) + ->addArgument($config['detect_content_type']); + } + + /** + * {@inheritDoc} + */ + public function getKey() + { + return 'azure_blob_storage'; + } + + /** + * {@inheritDoc} + */ + public function addConfiguration(NodeDefinition $builder) + { + $builder + ->children() + ->scalarNode('blob_proxy_factory_id')->isRequired()->cannotBeEmpty()->end() + ->scalarNode('container_name')->isRequired()->cannotBeEmpty()->end() + ->booleanNode('create_container')->defaultValue(false)->end() + ->booleanNode('detect_content_type')->defaultValue(true)->end() + ->end() + ; + } +} \ No newline at end of file diff --git a/README.markdown b/README.markdown index 0663422..9542381 100644 --- a/README.markdown +++ b/README.markdown @@ -230,6 +230,45 @@ knp_gaufrette: mtime: 123456890123 ``` +## Azure Blob Storage (azure\_blob\_storage) + +Adapter for Microsoft Azure Blob Storage service. To use this adapter you need to install the +[Azure SDK for php](http://www.windowsazure.com/en-us/develop/php/common-tasks/download-php-sdk/) into your project. + +Further more you need a valid *connection string* and you must define a Blob Proxy factory service with it. You can use +the default `\Gaufrette\Adapter\AzureBlobStorage\BlobProxyFactory` this way: + +``` yaml +# app/config/config.yml +services: + azure_blob_proxy_factory: + class: Gaufrette\Adapter\AzureBlobStorage\BlobProxyFactory + arguments: [%azure_blob_storage_connection_string%] +``` + +You must set the parameter `azure_blob_storage_connection_string` to contain your windows azure blob storage connection +string. You can retrieve your connection string in your [Windows Azure management console](https://manage.windowsazure.com). + +### Parameters + + * `blob_proxy_factory_id` Reference to the blob proxy factory service + * `container_name` The name of the container + * `create_container` Boolean value that indicates whether to create the container if it does not exists (*optional*: default *false*) + * `detect_content_type` Boolean value that indicates whether to auto determinate and set the content type on new blobs (*optional*: default *true*) + +### Example + +``` yaml +# app/config/config.yml +knp_gaufrette: + adapters: + foo: + azure_blob_storage: + blob_proxy_factory_id: azure_blob_proxy_factory + container_name: my_container + create_container: true +``` + ## GridFS (gridfs) Adapter that allows you to use a MongoDB GridFS for storing files. diff --git a/Resources/config/adapter_factories.xml b/Resources/config/adapter_factories.xml index b316e47..6ae6efe 100644 --- a/Resources/config/adapter_factories.xml +++ b/Resources/config/adapter_factories.xml @@ -26,6 +26,9 @@ + + + @@ -48,4 +51,3 @@ - diff --git a/Resources/config/gaufrette.xml b/Resources/config/gaufrette.xml index 36ec7d5..f80c01c 100644 --- a/Resources/config/gaufrette.xml +++ b/Resources/config/gaufrette.xml @@ -30,6 +30,7 @@ + @@ -48,4 +49,3 @@ -