domain-auth-0.1.0: Network/DomainAuth/PRD/Domain.hs
module Network.DomainAuth.PRD.Domain (extractDomain) where
import Network.DNS (Domain)
import Network.DomainAuth.Mail
import Network.DomainAuth.PRD.Lexer
import Text.Appar.LazyByteString
{-|
Extract a domain from a value of a header field.
-}
extractDomain :: RawFieldValue -> Maybe Domain
extractDomain bs = parse structured bs >>= takeDomain
where
takeDomain = dropTail . dropWhile (/="@")
dropTail [] = Nothing
dropTail xs = (Just . concat . takeWhile (/=">") . tail) xs