diff --git a/lib/tesla/middleware/compression.ex b/lib/tesla/middleware/compression.ex index c2cb24ad..3d9ba7f2 100644 --- a/lib/tesla/middleware/compression.ex +++ b/lib/tesla/middleware/compression.ex @@ -61,8 +61,17 @@ defmodule Tesla.Middleware.Compression do def decompress({:error, reason}), do: {:error, reason} def decompress(env) do + body = decompress_body(env.body, Tesla.get_header(env, "content-encoding")) + + content_length = + body + |> byte_size() + |> to_string() + env - |> Tesla.put_body(decompress_body(env.body, Tesla.get_header(env, "content-encoding"))) + |> Tesla.put_body(body) + |> Tesla.delete_header("content-encoding") + |> Tesla.put_header("content-length", content_length) end defp decompress_body(<<31, 139, 8, _::binary>> = body, "gzip"), do: :zlib.gunzip(body)