# Sftp

An Elixir wrapper around the Erlang SFTP application. This allows for the use of Elixir Streams to 
transfer files via SFTP. 
## Creating a Connection

The following is an example of creating a connection with a username and password. 

    {:ok, conn} = Sftp.connect([host: 'somehost', user: 'someuser', password: 'somepassword'])

Other connection arguments can be found in the [Erlang documentation]("") 

## Streaming Files

An example of writing a file to a server is the following.
    stream =!("filename.txt")
        |> Stream.into(!(connection,"/home/path/filename.txt"))
A file can be downloaded as follows - in this example a remote file "test2.csv" is downloaded to 
the local file "filename.txt"!(connection,"test2.csv") |> Stream.into(!("filename.txt")) |>

or using Enum.into!(connection, "test2.csv") |> Enum.into(!("filename.txt"))
This follows the same pattern as Elixir IO streams so a file can be transferred
from one server to another via SFTP as follows.

    stream =!(connection,"/home/path/filename.txt")
    |> Stream.into(!(connection2,"/home/path/filename.txt"))

## Installation

If [available in Hex](, the package can be installed as:

  1. Add `sftp` to your list of dependencies in `mix.exs`:

    def deps do
      [{:sftp, "~> 0.2.1"}]

  2. Ensure `sftp` is started before your application:

    def application do
      [applications: [:sftp]]