module Network.HTTP.Lucu.HttpVersion
( HttpVersion(..)
, printHttpVersion
-
- , httpVersionP
+ , httpVersion
)
where
-import qualified Blaze.Text.Int as BT
import Control.Applicative
import Control.Applicative.Unicode
import Data.Ascii (AsciiBuilder)
-- Optimisation for special cases.
HttpVersion 1 0 → A.toAsciiBuilder "HTTP/1.0"
HttpVersion 1 1 → A.toAsciiBuilder "HTTP/1.1"
- -- General cases.
+ -- General (but almost never stumbling) cases.
HttpVersion maj min
- → A.toAsciiBuilder "HTTP/" ⊕
- A.unsafeFromBuilder (BT.integral maj) ⊕
- A.toAsciiBuilder "." ⊕
- A.unsafeFromBuilder (BT.integral min)
+ → A.toAsciiBuilder "HTTP/" ⊕
+ A.toAsciiBuilder (A.unsafeFromString $ show maj) ⊕
+ A.toAsciiBuilder "." ⊕
+ A.toAsciiBuilder (A.unsafeFromString $ show min)
-- |'Parser' for an 'HttpVersion'.
-httpVersionP ∷ Parser HttpVersion
-httpVersionP = string "HTTP/"
- *>
- choice [ string "1.1" *> pure (HttpVersion 1 1)
- , string "1.0" *> pure (HttpVersion 1 0)
- , HttpVersion <$> decimal ⊛ (char '.' *> decimal)
- ]
+httpVersion ∷ Parser HttpVersion
+httpVersion = string "HTTP/"
+ *>
+ (HttpVersion <$> decimal ⊛ (char '.' *> decimal))