ExFTP.Storage.S3Connector (ExFTP v1.0.4)

View Source

When storage_connector is ExFTP.Storage.S3Connector, this connector will use any S3-compatible storage provider.

Underneath the hood, ex_ftp is using ExAws.S3, so you'll need that configured properly.

โš™๏ธ Configuration

Keys

Example

  %{
    # ... ,
    storage_connector: ExFTP.Storage.S3Connector,
    storage_config: %{
        # the `/` path of the FTP server will point to s3://{my-storage-bucket}/
        storage_bucket: "my-storage-bucket"
    }
}

๐Ÿ‘€ See Also

๐Ÿ“– Resources

Summary

Functions

Create a function/1 that writes a stream to storage

Deletes a given directory

Deletes a given file

Whether a given path is an existing directory

Returns a stream to read the raw bytes of an object specified by a given path

Returns a list of ExFTP.StorageConnector.content_info/0 representing each object in a given directory

Returns the current working directory

Creates a directory, given a path

Functions

create_write_func(path, connector_state, opts \\ [])

@spec create_write_func(
  path :: ExFTP.StorageConnector.path(),
  connector_state :: ExFTP.StorageConnector.connector_state(),
  opts :: list()
) :: function()

Create a function/1 that writes a stream to storage

๐Ÿท๏ธ Params

  • path :: t:path/0
  • connector_state :: t:connector_state/0
  • opts :: list of options

delete_directory(path, connector_state)

@spec delete_directory(
  path :: ExFTP.StorageConnector.path(),
  connector_state :: ExFTP.StorageConnector.connector_state()
) :: {:ok, ExFTP.StorageConnector.connector_state()} | {:error, term()}

Deletes a given directory

๐Ÿท๏ธ Params

โคต๏ธ Returns

โœ… On Success

  {:ok, connector_state}

โŒ On Failure

  {:error, err}

๐Ÿ’ป Examples

iex> alias ExFTP.Storage.S3Connector
iex> connector_state = %{current_working_directory: "/"}
iex> dir_to_make = "/new_dir"
iex> {:ok, connector_state} = S3Connector.make_directory(dir_to_make, connector_state)
iex> dir_to_rm = dir_to_make
iex> {:ok, connector_state} = S3Connector.delete_directory(dir_to_rm, connector_state)
iex> S3Connector.directory_exists?(dir_to_rm, connector_state)
false

๐Ÿ‘€ See Also

๐Ÿ“– Resources

delete_file(path, connector_state)

@spec delete_file(
  path :: ExFTP.StorageConnector.path(),
  connector_state :: ExFTP.StorageConnector.connector_state()
) :: {:ok, ExFTP.StorageConnector.connector_state()} | {:error, term()}

Deletes a given file

๐Ÿท๏ธ Params

โคต๏ธ Returns

โœ… On Success

  {:ok, connector_state}

โŒ On Failure

  {:error, err}

๐Ÿ‘€ See Also

๐Ÿ“– Resources

directory_exists?(path, connector_state)

@spec directory_exists?(
  path :: ExFTP.StorageConnector.path(),
  connector_state :: ExFTP.StorageConnector.connector_state()
) :: boolean()

Whether a given path is an existing directory

๐Ÿท๏ธ Params

โคต๏ธ Returns

โœ… On Success

  `true` or `false`

๐Ÿ’ป Examples

iex> alias ExFTP.Storage.S3Connector
iex> S3Connector.directory_exists?("/", %{current_working_directory: "/"})
true
iex> S3Connector.directory_exists?("/does-not-exist", %{current_working_directory: "/"})
false

๐Ÿ‘€ See Also

๐Ÿ“– Resources

get_content(path, connector_state)

@spec get_content(
  path :: ExFTP.StorageConnector.path(),
  connector_state :: ExFTP.StorageConnector.connector_state()
) :: {:ok, any()} | {:error, term()}

Returns a stream to read the raw bytes of an object specified by a given path

๐Ÿท๏ธ Params

โคต๏ธ Returns

โœ… On Success

  {:ok, data}

โŒ On Failure

  {:error, err}

๐Ÿ‘€ See Also

๐Ÿ“– Resources

get_content_info(path, connector_state)

@spec get_content_info(
  path :: ExFTP.StorageConnector.path(),
  connector_state :: ExFTP.StorageConnector.connector_state()
) :: {:ok, ExFTP.StorageConnector.content_info()} | {:error, term()}

Returns a ExFTP.StorageConnector.content_info/0 representing a given path

๐Ÿท๏ธ Params

โคต๏ธ Returns

โœ… On Success

  {:ok, %{...}}

โŒ On Failure

  {:error, err}

๐Ÿ‘€ See Also

๐Ÿ“– Resources

get_directory_contents(path, connector_state)

@spec get_directory_contents(
  path :: ExFTP.StorageConnector.path(),
  connector_state :: ExFTP.StorageConnector.connector_state()
) :: {:ok, [ExFTP.StorageConnector.content_info()]} | {:error, term()}

Returns a list of ExFTP.StorageConnector.content_info/0 representing each object in a given directory

๐Ÿท๏ธ Params

โคต๏ธ Returns

โœ… On Success

  {:ok, [%{...}, ...]}

โŒ On Failure

  {:error, err}

๐Ÿ’ป Examples

iex> alias ExFTP.Storage.S3Connector
iex> connector_state = %{current_working_directory: "/"}
iex> dir = "/"
iex> {:ok, _content_infos} = S3Connector.get_directory_contents(dir, connector_state)

๐Ÿ‘€ See Also

๐Ÿ“– Resources

get_working_directory(connector_state)

@spec get_working_directory(
  connector_state :: ExFTP.StorageConnector.connector_state()
) :: String.t()

Returns the current working directory

๐Ÿท๏ธ Params

๐Ÿ’ป Examples

iex> alias ExFTP.Storage.S3Connector
iex> S3Connector.get_working_directory(%{current_working_directory: "/"})
"/"

๐Ÿ‘€ See Also

๐Ÿ“– Resources

make_directory(path, connector_state)

@spec make_directory(
  path :: ExFTP.StorageConnector.path(),
  connector_state :: ExFTP.StorageConnector.connector_state()
) :: {:ok, ExFTP.StorageConnector.connector_state()} | {:error, term()}

Creates a directory, given a path

๐Ÿท๏ธ Params

โคต๏ธ Returns

โœ… On Success

  {:ok, connector_state}

โŒ On Failure

  {:error, err}

๐Ÿ’ป Examples

iex> alias ExFTP.Storage.S3Connector
iex> connector_state = %{current_working_directory: "/"}
iex> dir_to_make = "/new_dir/"
iex> {:ok, connector_state} = S3Connector.make_directory(dir_to_make, connector_state)
iex> S3Connector.directory_exists?(dir_to_make, connector_state)
true

๐Ÿ‘€ See Also

๐Ÿ“– Resources