lib/liberator/encoding/deflate.ex
defmodule Liberator.Encoding.Deflate do
@behaviour Liberator.Encoding
@moduledoc """
An implementation of the `deflate` compression used in HTTP.
"""
@impl true
def encode!(body) do
z = :zlib.open()
:zlib.deflateInit(z)
b = :zlib.deflate(z, :binary.bin_to_list(body), :finish)
:zlib.deflateEnd(z)
IO.iodata_to_binary(b)
end
end