-- Compression.hs: OpenPGP (RFC4880) compression conduits -- Copyright © 2012 Clint Adams -- This software is released under the terms of the ISC license. -- (See the LICENSE file). module Data.Conduit.OpenPGP.Compression ( conduitCompress , conduitDecompress ) where import Codec.Encryption.OpenPGP.Compression import Codec.Encryption.OpenPGP.Types import Data.Conduit import qualified Data.Conduit.List as CL conduitCompress :: MonadThrow m => CompressionAlgorithm -> Conduit Packet m Packet conduitCompress algo = conduitState [] push (close algo) where push state input = return $ StateProducing (input : state) [] close a state = return [compressPackets a state] conduitDecompress :: MonadThrow m => Conduit Packet m Packet conduitDecompress = CL.concatMap decompressPacket