hOpenPGP-0.2: Data/Conduit/OpenPGP/Compression.hs
-- ASCIIArmor.hs: OpenPGP (RFC4880) ASCII armor implementation
-- Copyright Ⓒ 2012 Clint Adams
-- This software is released under the terms of the Expat (MIT) 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 :: ResourceThrow m => CompressionAlgorithm -> Conduit Packet m Packet
conduitCompress algo = conduitState [] push (close algo)
where
push state input = return $ StateProducing (input : state) []
close algo state = return $ [compressPackets algo state]
conduitDecompress :: ResourceThrow m => Conduit Packet m Packet
conduitDecompress = CL.concatMap decompressPacket