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