118 lines
2.3 KiB
Markdown
118 lines
2.3 KiB
Markdown
---
|
|
---
|
|
|
|
This documentation is a work in progress regarding the way to use
|
|
Dotzip Elixir module. It should:
|
|
|
|
* be easy to understand (e.g. easy API)
|
|
* compatible with Erlang/Elixir release
|
|
* portable to any systems supported by Erlang/Elixir
|
|
* usable as stream of data
|
|
* offering an high level representation of the data/metadata
|
|
* easy to debug
|
|
|
|
# Elixir
|
|
|
|
## ZIP File Creation
|
|
|
|
Some example of the usage. Creating a zip file should be easy and only
|
|
based on a simple object creation.
|
|
|
|
```elixir
|
|
Dotzip.new()
|
|
|> Dotzip.to_binary()
|
|
```
|
|
|
|
Adding file should also be easy. Those files are loaded only when the
|
|
file is converted in binary.
|
|
|
|
```elixir
|
|
Dotzip.new()
|
|
|> Dotzip.file("/path/to/file/one", "/one")
|
|
|> Dotzip.file("/path/to/file/two", "/two")
|
|
|> Dotzip.to_binary()
|
|
```
|
|
|
|
It should also be possible to add recursively the content of a
|
|
directory.
|
|
|
|
```elixir
|
|
Dotzip.new()
|
|
|> Dotzip.directory("/path/to/directory", recursive: true)
|
|
|> Dotzip.to_binary()
|
|
```
|
|
|
|
A blob is any kind of data direcly stored in memory, from the BEAM.
|
|
|
|
```elixir
|
|
Dotzip.new()
|
|
|> Dotzip.blob("my raw data here", "/file_path")
|
|
|> Dotzip.blob("another content", "/file_path2")
|
|
|> Dotzip.to_binary()
|
|
```
|
|
|
|
The option of the zip file can be added directly when the zip is
|
|
created.
|
|
|
|
```elixir
|
|
Dotzip.new(compression: :unshrink)
|
|
```
|
|
|
|
A list of supported compression methods can be found directly in the
|
|
library.
|
|
|
|
```elixir
|
|
Dotzip.compression_methods()
|
|
```
|
|
|
|
Encrypted archive should also be made during the ZIP file creation.
|
|
|
|
```elixir
|
|
Dotzip.new(encryption: :aes_cbc256)
|
|
```
|
|
|
|
or by configuring it after the object was created.
|
|
|
|
```elixir
|
|
Dotzip.new()
|
|
|> Dotzip.hash(:md5)
|
|
|> Dotzip.encryption(:aes_cbc256, password: "my_password")
|
|
```
|
|
|
|
Supported method can be printed.
|
|
|
|
```elixir
|
|
Dotzip.encryption_methods()
|
|
```
|
|
|
|
## ZIP File Extraction
|
|
|
|
Extract all file from a local archive, present on the filesystem.
|
|
|
|
```elixir
|
|
Dotzip.open_file("/path/to/file.zip")
|
|
|> Dotzip.extract_all()
|
|
```
|
|
|
|
Extract only one or many files from the local archive.
|
|
|
|
```elixir
|
|
Dotzip.open_file("/path/to/file.zip")
|
|
|> Dotzip.extract("/path/compressed/file")
|
|
|> Dotzip.extract("/path/to/compressed.data")
|
|
```
|
|
|
|
Convert the full archive in erlang/elixir term.
|
|
|
|
```elixir
|
|
Dotzip.open_file("/path/to/file.zip")
|
|
|> Dotzip.to_term()
|
|
```
|
|
|
|
Convert a stream archive to erlang/elixir term.
|
|
|
|
```elixir
|
|
Dotzip.open_stream(mydata)
|
|
|> Dotzip.to_term()
|
|
```
|