domain-auth-0.2.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.ByteString
import qualified Data.ByteString.Char8 as BS
{-|
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 . BS.pack . concat . takeWhile (/=">") . tail) xs