3 -- |Manipulation of HTTP version string.
4 module Network.HTTP.Lucu.HttpVersion
11 import qualified Data.ByteString.Char8 as C8
12 import Network.HTTP.Lucu.Parser
13 import Prelude hiding (min)
16 -- |@'HttpVersion' major minor@ represents \"HTTP\/major.minor\".
17 data HttpVersion = HttpVersion !Int !Int
20 instance Show HttpVersion where
21 show (HttpVersion maj min) = "HTTP/" ++ show maj ++ "." ++ show min
23 instance Ord HttpVersion where
24 (HttpVersion majA minA) `compare` (HttpVersion majB minB)
32 httpVersionP :: Parser HttpVersion
33 httpVersionP = do string "HTTP/"
37 return $ HttpVersion (read' major) (read' minor)
39 read' "1" = 1 -- この二つが
40 read' "0" = 0 -- 壓倒的に頻出する
44 hPutHttpVersion :: Handle -> HttpVersion -> IO ()
45 hPutHttpVersion h (HttpVersion maj min)
47 do C8.hPut h (C8.pack "HTTP/")