Skip to content

Sightsource/belt_copy

Belt

Hex.pm Hexdocs.pm License Build Status

Extensible Elixir OTP Application for storing files remotely or locally through a unified API. Backends currently exist for the local filesystem, SFTP and the Amazon S3 API.

Documentation

Check out the documentation at hexdocs.pm/belt and our Getting Started guide.

Usage

#Simple file upload
{:ok, config} = Belt.Provider.SFTP.new(host: "example.com", directory: "/var/files",
                                       user: "…", password: "…")
Belt.store(config, "/path/to/local/file.ext")
#=> {:ok, %Belt.FileInfo{…}}


#Asynchronous file upload
{:ok, config} = Belt.Provider.S3.new(access_key_id: "…", secret_access_key: "…",
                                     bucket: "belt-file-bucket")
{:ok, job} = Belt.store_async(config, "/path/to/local/file.ext")
#Do other things while Belt is uploading in the background
Belt.await(job)
#=> {:ok, %Belt.FileInfo{…}}

Installation

Belt can be installed by adding belt to your dependencies and application list in mix.exs:

def deps do
  [{:belt, "~> 0.1.0"}]
end

def application do
  [extra_applications: [:belt]]
end

Installation for the S3 backend

If you want to use the S3 backend, you also need to add ExAws with ExAws S3 as well as Hackney and sweet_xml (which are required by ExAws) to your dependencies and applications list:

def deps do
  [{:belt, "~> 0.4.0"},
   {:ex_aws, "~> 2.1"},
   {:ex_aws_s3, "~> 2.0"},
   {:hackney, "~> 1.9"},
   {:sweet_xml, "~> 0.6"}]
end

def application do
  [extra_applications: [:belt, :hackney, .sweet_xml]]
end

License

Belt is dual-licensed and can be used under the terms of either the GNU AGPLv3 or the Apache 2.0 license (which is the license Elixir uses).

About

No description, website, or topics provided.

Resources

License

Unknown and 2 other licenses found

Licenses found

Unknown
LICENSE
AGPL-3.0
LICENSE.AGPLv3
Apache-2.0
LICENSE.APACHEv2

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages