module Data.SMTP.Parser.Seal ( --parseRcptSeal, parseRcptSealParam, SealAttribute, headersToSeal) where import Data.SMTP.Types.Seal import Data.SMTP.Types.Resource import qualified Data.ByteString.Base64 as B64 import qualified Data.ByteString.Char8 as C8 import Data.ByteString (ByteString) headersToSeal :: [Header] -> Maybe Seal headersToSeal hh = let mycp = decode2maybe =<< getH hh cpHeaderName mynonce = decode2maybe =<< getH hh nonceHeaderName mycode = decode2maybe =<< getH hh sealHeaderName in do cp' <- mycp code' <- mycode Just $ Seal cp' code' mynonce where getH :: [Header] -> String -> Maybe ByteString getH hh' h = C8.pack <$> getHeaderValue hh' h either2maybef :: (a -> Either b c) -> a -> Maybe c either2maybef f v = either2maybe $ f v either2maybe :: Either a b -> Maybe b either2maybe (Left _) = Nothing either2maybe (Right v) = Just v decode2maybe = either2maybef B64.decode