Packages
req
0.6.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.18
0.5.17
0.5.16
0.5.15
0.5.14
0.5.13
0.5.12
0.5.11
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.2
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
Req is a batteries-included HTTP client for Elixir.
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
lib/req/zip.ex
defmodule Req.ZIP do
@moduledoc """
ZIP archive decoding.
"""
@doc """
Decodes a ZIP archive `binary` into a list of `{name, contents}` entries.
Returns `{:ok, entries}` or `{:error, exception}`.
"""
@spec decode(binary()) :: {:ok, [{charlist(), binary()}]} | {:error, %Req.ArchiveError{}}
def decode(binary) when is_binary(binary) do
case :zip.extract(binary, [:memory]) do
{:ok, files} ->
{:ok, files}
{:error, _reason} ->
# :zip surfaces an internal `{:badmatch, _}` term here, which is not useful.
{:error, %Req.ArchiveError{format: :zip, data: binary}}
end
end
end