module Network.Salvia.Handlers.MethodRouter ( hMethod , hMethodRouter , hOPTIONS , hGET , hHEAD , hPOST , hPUT , hDELETE , hTRACE , hCONNECT ) where import Data.Record.Label import Network.Protocol.Http import Network.Salvia.Handlers.Dispatching import Network.Salvia.Handlers.Error import Network.Salvia.Httpd hMethod' :: Dispatcher Method a hMethod' = hDispatch (method % request) (==) hMethodRouter :: ListDispatcher Method a hMethodRouter = hListDispatch hMethod' hMethod :: Method -> Handler () -> Handler () hMethod m k = hMethod' m k (hError NotFound) -- Shortcut handlers that only work for specific method types or fail. hOPTIONS, hGET, hHEAD, hPOST, hPUT, hDELETE, hTRACE, hCONNECT :: Handler () -> Handler () hOPTIONS = hMethod OPTIONS hGET = hMethod GET hHEAD = hMethod HEAD hPOST = hMethod POST hPUT = hMethod PUT hDELETE = hMethod DELETE hTRACE = hMethod TRACE hCONNECT = hMethod CONNECT