module Potoki.Zlib.Transform ( decompress ) where import Potoki.Zlib.Prelude import qualified Potoki.Zlib.Fetch as Z import Potoki.Core.Transform (Transform(..)) import qualified Codec.Compression.Zlib.Internal as I import qualified Acquire.Acquire as A decompress :: Transform ByteString (Either I.DecompressError ByteString) decompress = Transform $ \oldFetchIO -> A.Acquire $ do initChunksRef <- newIORef [] decompRef <- newIORef (I.decompressIO I.gzipFormat I.defaultDecompressParams) let fetch = Z.runGzip initChunksRef decompRef oldFetchIO kill = return () return (fetch, kill)