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
15 -- |@'HttpVersion' major minor@ represents \"HTTP\/major.minor\".
16 data HttpVersion = HttpVersion !Int !Int
19 instance Show HttpVersion where
20 show (HttpVersion maj min) = "HTTP/" ++ show maj ++ "." ++ show min
22 instance Ord HttpVersion where
23 (HttpVersion majA minA) `compare` (HttpVersion majB minB)
31 httpVersionP :: Parser HttpVersion
32 httpVersionP = do string "HTTP/"
36 return $ HttpVersion (read' major) (read' minor)
38 read' "1" = 1 -- この二つが
39 read' "0" = 0 -- 壓倒的に頻出する
43 hPutHttpVersion :: Handle -> HttpVersion -> IO ()
44 hPutHttpVersion h (HttpVersion maj min)
46 do C8.hPut h (C8.pack "HTTP/")