<?xml version="1.0" encoding="UTF-8"?>

<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <parameters>
        <parameter key="knp_gaufrette.filesystem_map.class">Knp\Bundle\GaufretteBundle\FilesystemMap</parameter>
    </parameters>
    <services>
        <service id="knp_gaufrette.filesystem" class="Gaufrette\Filesystem" abstract="true" public="true">
            <argument /><!-- The Adapter -->
        </service>

        <service id="knp_gaufrette.adapter.in_memory" class="Gaufrette\Adapter\InMemory" abstract="true" public="false">
            <argument /><!-- Files -->
        </service>
        <service id="knp_gaufrette.adapter.local" class="Gaufrette\Adapter\Local" abstract="true" public="false">
            <argument /><!-- Directory -->
            <argument /><!-- Create -->
        </service>
        <service id="knp_gaufrette.adapter.safe_local" class="Gaufrette\Adapter\SafeLocal" abstract="true" public="false">
            <argument /><!-- Directory -->
            <argument /><!-- Create -->
        </service>
        <service id="knp_gaufrette.adapter.async_aws_s3" class="Gaufrette\Adapter\AsyncAwsS3" abstract="true" public="false" />
        <service id="knp_gaufrette.adapter.aws_s3" class="Gaufrette\Adapter\AwsS3" abstract="true" public="false" />
        <service id="knp_gaufrette.adapter.doctrine_dbal" class="Gaufrette\Adapter\DoctrineDbal" abstract="true" public="false" />
        <service id="knp_gaufrette.adapter.opencloud" class="Gaufrette\Adapter\OpenCloud" abstract="true" public="false">
            <argument /><!-- ObjectStore -->
            <argument /><!-- Container name -->
            <argument /><!-- Create container -->
            <argument /><!-- Detect content type -->
        </service>
        <service id="knp_gaufrette.adapter.azure_blob_storage" class="Gaufrette\Adapter\AzureBlobStorage" abstract="true" public="false" />
        <service id="knp_gaufrette.adapter.google_cloud_storage" class="Gaufrette\Adapter\GoogleCloudStorage" abstract="true" public="false" />
        <service id="knp_gaufrette.adapter.gridfs" class="Gaufrette\Adapter\GridFS" abstract="true" public="false" />
        <service id="knp_gaufrette.adapter.ftp" class="Gaufrette\Adapter\Ftp" abstract="true" public="false" />
        <service id="knp_gaufrette.adapter.phpseclib_sftp" class="Gaufrette\Adapter\PhpseclibSftp" abstract="true" public="false" />
        <service id="knp_gaufrette.filesystem_map" class="%knp_gaufrette.filesystem_map.class%" public="true">
            <argument /> <!-- map of filesystems -->
        </service>
        <service id="%knp_gaufrette.filesystem_map.class%" alias="knp_gaufrette.filesystem_map" public="false"/>

        <service id="knp_gaufrette.command.filesystem_keys" class="Knp\Bundle\GaufretteBundle\Command\FilesystemKeysCommand">
            <argument type="service" id="knp_gaufrette.filesystem_map" />
            <tag name="console.command" command="gaufrette:filesystem:keys" />
        </service>
    </services>

</container>
