module Network.Email.Header.Types
( Headers
, HeaderName
, HeaderField
, Address(..)
, Mailbox(..)
, Recipient(..)
, MessageID(..)
, MimeType(..)
, Parameters
) where
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
type Headers = [(HeaderName, HeaderField)]
type HeaderName = CI B.ByteString
type HeaderField = L.ByteString
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