module WASH.CGI.HTTP where import Char data Method = OPTIONS | GET | HEAD | POST | PUT | DELETE | TRACE | CONNECT | Extension String deriving Eq instance Show Method where showsPrec _ OPTIONS = showString "OPTIONS" showsPrec _ GET = showString "GET" showsPrec _ HEAD = showString "HEAD" showsPrec _ POST = showString "POST" showsPrec _ PUT = showString "PUT" showsPrec _ DELETE = showString "DELETE" showsPrec _ TRACE = showString "TRACE" showsPrec _ CONNECT = showString "CONNECT" showsPrec _ (Extension s) = showString s instance Read Method where readsPrec _ s = let (token, rest) = span isAlphaNum s in [( case token of "OPTIONS" -> OPTIONS "GET" -> GET "HEAD" -> HEAD "POST" -> POST "PUT" -> PUT "DELETE" -> DELETE "TRACE" -> TRACE "CONNECT" -> CONNECT other -> Extension other , dropWhile isSpace rest)]