12345678910111213141516171819202122232425262728 |
- 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
|