123456789101112131415161718192021222324252627282930313233 |
- {-# 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
|