packages feed

salvia-0.0.4: src/Network/Salvia/Handlers/MethodRouter.hs

module Network.Salvia.Handlers.MethodRouter (
    hMethod
  , hMethodRouter

  , hOPTIONS
  , hGET
  , hHEAD
  , hPOST
  , hPUT
  , hDELETE
  , hTRACE
  , hCONNECT
  ) where

import Network.Salvia.Handlers.Dispatching
import Network.Salvia.Handlers.Error
import Network.Salvia.Httpd
import Network.Protocol.Http

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