1 {-# OPTIONS_HADDOCK prune #-}
3 -- |Manipulation of entity tags.
4 module Network.HTTP.Lucu.ETag
14 import Network.HTTP.Lucu.Parser
15 import Network.HTTP.Lucu.Parser.Http hiding (token)
16 import Network.HTTP.Lucu.Utils
18 -- |An entity tag is made of a weakness flag and a opaque string.
20 -- |The weakness flag. Weak tags looks like W\/\"blahblah\" and
21 -- strong tags are like \"blahblah\".
23 -- |An opaque string. Only characters from 0x20 (sp) to 0x7e (~)
25 , etagToken :: !String
28 instance Show ETag where
29 show (ETag isWeak token) = (if isWeak then
36 -- |This is equivalent to @'ETag' 'Prelude.False'@. If you want to
37 -- generate an ETag from a file, try using
38 -- 'Network.HTTP.Lucu.StaticFile.generateETagFromFile'.
39 strongETag :: String -> ETag
40 strongETag = ETag False
42 -- |This is equivalent to @'ETag' 'Prelude.True'@.
43 weakETag :: String -> ETag
48 eTagP = do isWeak <- option False (string "W/" >> return True)
50 return $ ETag isWeak str
53 eTagListP :: Parser [ETag]
55 $! do xs <- listOf eTagP