{-# LANGUAGE RankNTypes #-} -- | This module exports utilities to compress and decompress GZip @pipes@ -- streams. module Pipes.GZip ( -- * Streams decompress , compress -- * Compression level -- $ccz-re-export , ZC.defaultCompression , ZC.noCompression , ZC.bestSpeed , ZC.bestCompression , ZC.compressionLevel ) where import qualified Codec.Compression.Zlib as ZC import qualified Data.ByteString as B import Pipes import qualified Pipes.Zlib -------------------------------------------------------------------------------- -- | Decompress bytes flowing from a 'Producer'. decompress :: MonadIO m => Producer' B.ByteString m r -- ^ Compressed stream -> Producer' B.ByteString m r -- ^ Decompressed stream decompress = Pipes.Zlib.decompress (ZC.WindowBits 31) {-# INLINABLE decompress #-} -- | Compress bytes flowing from a 'Producer'. compress :: MonadIO m => ZC.CompressionLevel -> Producer' B.ByteString m r -- ^ Decompressed stream -> Producer' B.ByteString m r -- ^ Compressed stream compress clevel = Pipes.Zlib.compress clevel (ZC.WindowBits 31) {-# INLINABLE compress #-}