module Network.Email.Header.Types
(
HeaderName
, Header
, Headers
, Address(..)
, Mailbox(..)
, Recipient(..)
, MessageID(..)
, MimeType(..)
, Parameters
, HeaderException(..)
) where
import Control.Exception
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as L
import Data.CaseInsensitive (CI)
import Data.Map.Strict (Map)
import qualified Data.Text.Lazy as L
import Data.Typeable
type HeaderName = CI B.ByteString
type Header = (HeaderName, L.ByteString)
type Headers = [Header]
newtype Address = Address B.ByteString
deriving (Eq, Ord, Show)
data Mailbox = Mailbox
{ displayName :: Maybe L.Text
, mailboxAddress :: Address
} deriving (Eq, Show)
data Recipient
= Individual Mailbox
| Group L.Text [Mailbox]
deriving (Eq, Show)
newtype MessageID = MessageID B.ByteString
deriving (Eq, Ord, Show)
data MimeType = MimeType
{ mimeType :: CI B.ByteString
, mimeSubtype :: CI B.ByteString
} deriving (Eq, Ord, Show)
type Parameters = Map (CI B.ByteString) B.ByteString
data HeaderException
= MissingHeader HeaderName
| HeaderParseError Header String
deriving (Show, Typeable)
instance Exception HeaderException