Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/doomspork/artifact
File upload and on-the-fly processing for Elixir
https://github.com/doomspork/artifact
Last synced: 24 days ago
JSON representation
File upload and on-the-fly processing for Elixir
- Host: GitHub
- URL: https://github.com/doomspork/artifact
- Owner: doomspork
- License: apache-2.0
- Created: 2016-02-11T21:46:28.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-10-15T17:20:30.000Z (about 6 years ago)
- Last Synced: 2024-10-04T20:57:20.449Z (about 1 month ago)
- Language: Elixir
- Homepage:
- Size: 36.1 KB
- Stars: 44
- Watchers: 4
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- freaking_awesome_elixir - Elixir - File upload and on-the-fly processing for Elixir. (Images)
- fucking-awesome-elixir - artifact - File upload and on-the-fly processing for Elixir. (Images)
- awesome-elixir - artifact - File upload and on-the-fly processing for Elixir. (Images)
README
# Artifact
> File upload and on-the-fly processing for Elixir
[![Build Status][travis-img]][travis] [![Hex Version][hex-img]][hex] [![License][license-img]][license]
[travis-img]: https://travis-ci.org/doomspork/artifact.png?branch=master
[travis]: https://travis-ci.org/doomspork/artifact
[hex-img]: https://img.shields.io/hexpm/v/artifact.svg
[hex]: https://hex.pm/packages/artifact
[license-img]: https://img.shields.io/badge/license-Apache%202.0-brightgreen.svg
[license]: https://opensource.org/licenses/Apache-2.0___Artifact is under active development, join the fun!___
## Installation
Add `artifact` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[{:artifact, "~> 0.4"}]
end
```Next, add :artifact to your list of applications:
```elixir
def application do
[applications: [:artifact]]
end
```Since ```artifact``` relies on external processes for transformations, it is recommended that you install the goon middleware. To install, download the package for your system and unzip the contents somewhere in your $PATH:
```bash
$ sudo tar zxf goon_darwin_amd64.tar.gz -C /usr/local/bin/
```By default ```artifact``` uses the imagemagick software which is available via your os package manager, homebrew or from [http://www.imagemagick.org/](http://www.imagemagick.org/).
## Setup in 1-2-3
1. Define a module and `use` Artifact:
```elixir
defmodule ExampleUploader do
use Artifact, otp_app: :my_app
end
```2. Add the supervisor to your supervisor tree:
```elixir
def start(_type, _args) do
import Supervisor.Spec, warn: falsechildren = [
supervisor(ExampleUploader.Supervisor, [])
]opts = [strategy: :one_for_one, name: MyApp.Supervisor]
Supervisor.start_link(children, opts)
end
```3. Update your router to include the generated plug:
```elixir
forward "/images", ExampleUploader.Endpoint
```## Configuration
```elixir
config :my_app, ExampleUploader,
asset_host: "http://www.example.com/images",
asset_url: "/:format/:name",
default: "placeholder.png",
formats: %{
thumb: "convert -'[0]' -resize 50x50 -gravity center +repage -strip jpg:-"
}config :my_app, ExampleUploader.Storage,
type: Artifact.Storage.Local,
storage_dir: Path.expand("../web/static/assets/images", __DIR__)config :my_app, ExampleUploader.Pool,
pool_size: 1
```## Use
```elixir
iex> {:ok, name} = ExampleUploader.put(data, name: "profile.png")
iex> name
"profile.png"
iex> {:ok, url} = ExampleUploader.URLHelpers.url(name, :thumb)
"http://www.example.com/images/thumb/profile.png"
```## Phoenix Integration
Using Aritfact with Phoenix? It may be helpful to update your `web/web.ex` to alias or import the uploader's url helpers:
```elixir
def view do
quote do
use Phoenix.View, root: "web/templates"import Phoenix.Controller, only: [get_csrf_token: 0, get_flash: 2, view_module: 1]
use Phoenix.HTML
# We'll use an alias with a shorter name
alias ExampleUploader.URLHelpers, as: Imagesimport BevReviews.Router.Helpers
import BevReviews.ErrorHelpers
import BevReviews.Gettext
end
end
```Now we can generate URLs in our markup:
```erb
```The value of ```user.avatar``` can be both a filename or a subpath from ```web/static/assets/images/```.
## License
Artifact source code is released under Apache 2.0 License.
See [LICENSE](LICENSE) for more information.