1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- module Data.SMTP.Types.Resource where
- import Data.SMTP.Types.Seal
- import Data.SMTP.Types.URI
- --import Data.SMTP.Account (Account)
- import qualified Data.SMTP.Types.Mime as Mime
- --import qualified System.IO.Uniform as UIO
- import qualified Data.ByteString.Lazy as LBS
- import Data.Char
- data Header = Header (String, String) deriving (Read, Show, Eq, Ord)
- data RevisionInfo = RevisionInfo {
- current :: Revision,
- bases :: [Revision]
- } deriving (Eq, Ord, Read, Show)
- data Resource = Resource {
- mimeType :: Mime.ContentType,
- publicHeaders :: [Header],
- seal :: Maybe Seal,
- revision :: Maybe RevisionInfo,
- bodyData :: ResourceData}
- type ResourceData = LBS.ByteString
- getHeader :: [Header] -> String -> Maybe Header
- getHeader [] _ = Nothing
- getHeader (h@(Header (hk, _)) : hh) k
- | map toLower hk == map toLower k = Just h
- | otherwise = getHeader hh k
- getHeaderValue :: [Header] -> String -> Maybe String
- getHeaderValue hh h = case getHeader hh h of
- Just (Header (_, v)) -> Just v
- Nothing -> Nothing
- getMultiple :: [Header] -> String -> [Header]
- getMultiple hh h = filter (\(Header (k, _)) -> k == h) hh
- getMultipleValue :: [Header] -> String -> [String]
- getMultipleValue hh = map (\(Header (_, v)) -> v) . getMultiple hh
- revisionHeader :: String
- revisionHeader = "FCMTP-Revision"
- baseHeader :: String
- baseHeader = "FCMTP-Revision-Base"
- headersRevision :: [Header] -> Maybe RevisionInfo
- headersRevision hh = do
- curr <- Revision <$> getHeaderValue hh revisionHeader
- let bb = map Revision $ getMultipleValue hh baseHeader
- return $ RevisionInfo curr bb
|