module Network.DomainAuth.Mail.Types where
import Data.ByteString (ByteString)
import qualified Data.ByteString.Char8 as BS
import Data.Char
import Data.Sequence
type RawMail = ByteString
type = ByteString
type RawBody = ByteString
type RawField = ByteString
type RawFieldKey = ByteString
type RawFieldValue = ByteString
type RawBodyChunk = ByteString
data Mail = Mail
{ :: Header
, Mail -> Body
mailBody :: Body
}
deriving (Mail -> Mail -> Bool
(Mail -> Mail -> Bool) -> (Mail -> Mail -> Bool) -> Eq Mail
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Mail -> Mail -> Bool
== :: Mail -> Mail -> Bool
$c/= :: Mail -> Mail -> Bool
/= :: Mail -> Mail -> Bool
Eq, Int -> Mail -> ShowS
[Mail] -> ShowS
Mail -> String
(Int -> Mail -> ShowS)
-> (Mail -> String) -> ([Mail] -> ShowS) -> Show Mail
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Mail -> ShowS
showsPrec :: Int -> Mail -> ShowS
$cshow :: Mail -> String
show :: Mail -> String
$cshowList :: [Mail] -> ShowS
showList :: [Mail] -> ShowS
Show)
isEmpty :: Body -> Bool
isEmpty :: Body -> Bool
isEmpty = (Body -> Body -> Bool
forall a. Eq a => a -> a -> Bool
== Body
forall a. Seq a
empty)
type = [Field]
data Field = Field
{ Field -> ByteString
fieldSearchKey :: CanonFieldKey
, Field -> ByteString
fieldKey :: FieldKey
, Field -> FieldValue
fieldValue :: FieldValue
}
deriving (Field -> Field -> Bool
(Field -> Field -> Bool) -> (Field -> Field -> Bool) -> Eq Field
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Field -> Field -> Bool
== :: Field -> Field -> Bool
$c/= :: Field -> Field -> Bool
/= :: Field -> Field -> Bool
Eq, Int -> Field -> ShowS
Header -> ShowS
Field -> String
(Int -> Field -> ShowS)
-> (Field -> String) -> (Header -> ShowS) -> Show Field
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Field -> ShowS
showsPrec :: Int -> Field -> ShowS
$cshow :: Field -> String
show :: Field -> String
$cshowList :: Header -> ShowS
showList :: Header -> ShowS
Show)
type CanonFieldKey = ByteString
type FieldKey = ByteString
type FieldValue = [ByteString]
type Body = Seq ByteString
canonicalizeKey :: FieldKey -> CanonFieldKey
canonicalizeKey :: ByteString -> ByteString
canonicalizeKey = (Char -> Char) -> ByteString -> ByteString
BS.map Char -> Char
toLower