diff --git a/DependencyInjection/Factory/SftpAdapterFactory.php b/DependencyInjection/Factory/SftpAdapterFactory.php
new file mode 100644
index 0000000..8899573
--- /dev/null
+++ b/DependencyInjection/Factory/SftpAdapterFactory.php
@@ -0,0 +1,49 @@
+setDefinition($id, new DefinitionDecorator('knp_gaufrette.adapter.sftp'))
+ ->addArgument(new Reference($config['sftp_id']))
+ ->addArgument($config['directory'])
+ ->addArgument($config['create'])
+ ;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ function getKey()
+ {
+ return 'sftp';
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ function addConfiguration(NodeDefinition $builder)
+ {
+ $builder
+ ->children()
+ ->scalarNode('sftp_id')->isRequired()->end()
+ ->scalarNode('directory')->defaultNull()->end()
+ ->booleanNode('create')->defaultFalse()->end()
+ ->end()
+ ;
+ }
+}
diff --git a/README.markdown b/README.markdown
index e19202c..1abf484 100644
--- a/README.markdown
+++ b/README.markdown
@@ -321,6 +321,56 @@ knp_gaufrette:
mode: FTP_BINARY
```
+## Sftp
+
+Adapter for SFTP (SSH-FTP).
+
+### Parameters
+
+ * `sftp_id` The id of the service that provides SFTP access.
+ * `directory* The distant directory *(default null)*.
+ * `create` Whether to create the directory if it does not exist *(default false)*.
+
+### Example
+
+``` yaml
+# app/config/config.yml
+knp_gaufrette:
+ adapters:
+ foo:
+ sftp:
+ sftp_id: acme_test.sftp
+ directory: /example/sftp
+ create: true
+```
+
+In your AcmeTestBundle, add following service definitions:
+
+``` yaml
+# src/Acme/TestBundle/Resources/config/services.yml
+parameters:
+ acme_test.ssh.host: my_host_name
+ acme_test.ssh.username: user_name
+ acme_test.ssh.password: some_secret
+
+services:
+ acme_test.ssh.configuration:
+ class: Ssh\Configuration
+ arguments: [%acme_test.ssh.host%]
+
+ acme_test.ssh.authentication:
+ class: Ssh\Authentication\Password
+ arguments: [%acme_test.ssh.username%, %acme_test.ssh.password%]
+
+ acme_test.ssh.session:
+ class: Ssh\Session
+ arguments: [@acme_test.ssh.configuration, @acme_test.ssh.authentication]
+
+ acme_test.sftp:
+ class: Ssh\Sftp
+ arguments: [@acme_test.ssh.session]
+```
+
## Apc
Adapter for APC.
diff --git a/Resources/config/adapter_factories.xml b/Resources/config/adapter_factories.xml
index 4d52403..d583ded 100644
--- a/Resources/config/adapter_factories.xml
+++ b/Resources/config/adapter_factories.xml
@@ -32,6 +32,9 @@
+
+
+
diff --git a/Resources/config/gaufrette.xml b/Resources/config/gaufrette.xml
index db8720d..d24a556 100644
--- a/Resources/config/gaufrette.xml
+++ b/Resources/config/gaufrette.xml
@@ -30,6 +30,7 @@
+