-requestP :: Parser Request
-requestP = do many crlf
- (method, uri, version) <- requestLineP
- headers <- headersP
- return Request {
- reqMethod = method
- , reqURI = uri
- , reqVersion = version
- , reqHeaders = headers
- }
-
-
-requestLineP :: Parser (Method, URI, HttpVersion)
-requestLineP = do method <- methodP
- sp
- uri <- uriP
- sp
- ver <- httpVersionP
- crlf
- return (method, uri, ver)
-
+instance Default (Parser Method) where
+ {-# INLINEABLE def #-}
+ def = choice
+ [ string "OPTIONS" ≫ return OPTIONS
+ , string "GET" ≫ return GET
+ , string "HEAD" ≫ return HEAD
+ , string "POST" ≫ return POST
+ , string "PUT" ≫ return PUT
+ , string "DELETE" ≫ return DELETE
+ , string "TRACE" ≫ return TRACE
+ , string "CONNECT" ≫ return CONNECT
+ , ExtensionMethod <$> token
+ ]