{-# LANGUAGE OverloadedStrings #-} module Data.SMTP.Types.Address where import qualified Data.SMTP.Account as Ac import qualified Data.SMTP.URI as URI import qualified Data.SMTP.Seal as Seal import qualified Data.Text as T import qualified Data.Attoparsec.Text as A import Text.StringConvert data Address = Address URI.URI deriving (Eq, Ord) instance Show Address where show (Address u) = show u headerName :: String headerName = "fCMTP-Address" host :: Address -> Ac.HostName host = Ac.domain . account account :: Address -> Ac.Account account (Address u) = URI.account u seal :: URI.URI -> Maybe Seal.Seal seal u = do se <- URI.getParameter "seal" u eitherToMaybe . A.parseOnly Seal.parseURISeal . T.pack $ se where eitherToMaybe (Left _) = Nothing eitherToMaybe (Right v) = Just v