{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
module Data.RFC5322.Address.Types
(
Mailbox(..)
, Address(..)
, AddrSpec(..)
, Domain(..)
) where
import Control.DeepSeq (NFData)
import qualified Data.Text as T
import qualified Data.ByteString as B
import Data.List.NonEmpty (NonEmpty)
import GHC.Generics (Generic)
data Mailbox =
Mailbox (Maybe T.Text )
AddrSpec
deriving (Show, Eq, Generic, NFData)
data AddrSpec =
AddrSpec B.ByteString
Domain
deriving (Show, Eq, Generic, NFData)
data Address
= Single Mailbox
| Group T.Text
[Mailbox]
deriving (Show, Eq, Generic, NFData)
data Domain
= DomainDotAtom (NonEmpty B.ByteString )
| DomainLiteral B.ByteString
deriving (Show, Eq, Generic, NFData)