From d921af3095849f88c75abb2bec3dd1881847ecfb Mon Sep 17 00:00:00 2001 From: Yordis Prieto Lazo Date: Thu, 10 Aug 2023 16:07:09 -0400 Subject: [PATCH] feat: improve decompression middleware closes #598 --- lib/tesla/middleware/compression.ex | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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)