1 module Network.HTTP.Lucu.Headers
4 , emptyHeaders -- Headers
8 import qualified Data.ByteString.Lazy.Char8 as B
9 import Data.ByteString.Lazy.Char8 (ByteString)
13 type Headers = [ (ByteString, ByteString) ]
15 class HasHeaders a where
16 getHeaders :: a -> Headers
17 setHeaders :: a -> Headers -> a
19 getHeader :: a -> ByteString -> Maybe ByteString
21 = fmap snd $ find (noCaseEq key . fst) (getHeaders a)
23 deleteHeader :: a -> ByteString -> a
25 = setHeaders a $ filter (not . noCaseEq key . fst) (getHeaders a)
27 addHeader :: a -> ByteString -> ByteString -> a
29 = setHeaders a $ (getHeaders a) ++ [(key, val)]
31 setHeader :: a -> ByteString -> ByteString -> a
33 = let list = getHeaders a
34 deleted = filter (not . noCaseEq key . fst) list
35 added = deleted ++ [(key, val)]
39 noCaseEq :: ByteString -> ByteString -> Bool
41 = (B.map toLower a) == (B.map toLower b)
44 emptyHeaders :: Headers