Route an incoming Request
to a handler. For more in-depth documentation see this section of the Happstack Crash Course: http://happstack.com/docs/crashcourse/RouteFilters.html
- methodM :: (ServerMonad m, MonadPlus m, MatchMethod method) => method -> m ()
- methodOnly :: (ServerMonad m, MonadPlus m, MatchMethod method) => method -> m ()
- methodSP :: (ServerMonad m, MonadPlus m, MatchMethod method) => method -> m b -> m b
- method :: (MatchMethod method, Monad m) => method -> WebT m a -> ServerPartT m a
- class MatchMethod m where
- matchMethod :: m -> Method -> Bool
- dir :: (ServerMonad m, MonadPlus m) => String -> m a -> m a
- dirs :: (ServerMonad m, MonadPlus m) => FilePath -> m a -> m a
- nullDir :: (ServerMonad m, MonadPlus m) => m ()
- trailingSlash :: (ServerMonad m, MonadPlus m) => m ()
- anyPath :: (ServerMonad m, MonadPlus m) => m r -> m r
- class FromReqURI a where
- fromReqURI :: String -> Maybe a
- path :: (FromReqURI a, MonadPlus m, ServerMonad m) => (a -> m b) -> m b
- uriRest :: ServerMonad m => (String -> m a) -> m a
- host :: (ServerMonad m, MonadPlus m) => String -> m a -> m a
- withHost :: (ServerMonad m, MonadPlus m) => (String -> m a) -> m a
- guardRq :: (ServerMonad m, MonadPlus m) => (Request -> Bool) -> m ()
Route by request method
methodM :: (ServerMonad m, MonadPlus m, MatchMethod method) => method -> m ()Source
Guard against the method. This function also guards against
*any remaining path segments*. See methodOnly
for the version
that guards only by method.
Example:
handler :: ServerPart Response handler = do methodM [GET, HEAD] ...
methodOnly :: (ServerMonad m, MonadPlus m, MatchMethod method) => method -> m ()Source
Guard against the method only (as opposed to methodM
).
Example:
handler :: ServerPart Response handler = do methodOnly [GET, HEAD] ...
methodSP :: (ServerMonad m, MonadPlus m, MatchMethod method) => method -> m b -> m bSource
Guard against the method. Note, this function also guards against
any remaining path segments. Similar to methodM
but with a different type signature.
Example:
handler :: ServerPart Response handler = methodSP [GET, HEAD] $ subHandler
method :: (MatchMethod method, Monad m) => method -> WebT m a -> ServerPartT m aSource
Guard against the method. Note, this function also guards against any remaining path segments.
DEPRECATED: Use methodSP
, methodM
, or methodOnly
class MatchMethod m whereSource
instances of this class provide a variety of ways to match on the Request
method.
Examples
methodM GET -- match GET methodM [HEAD, GET] -- match HEAD or GET methodM (not . (==) DELETE) -- match any method except DELETE methodM () -- match any method
matchMethod :: m -> Method -> BoolSource
MatchMethod () | |
MatchMethod Method | |
MatchMethod [Method] | |
MatchMethod (Method -> Bool) |
Route by pathInfo
dir :: (ServerMonad m, MonadPlus m) => String -> m a -> m aSource
Pop a path element and run the supplied handler if it matches the given string.
handler :: ServerPart Response handler = dir "foo" $ dir "bar" $ subHandler
The path element can not contain '/'. See also dirs
.
dirs :: (ServerMonad m, MonadPlus m) => FilePath -> m a -> m aSource
nullDir :: (ServerMonad m, MonadPlus m) => m ()Source
guard which only succeeds if there are no remaining path segments
Often used if you want to explicitly assign a route for /
trailingSlash :: (ServerMonad m, MonadPlus m) => m ()Source
Guard which checks that the Request URI ends in '/'
. Useful
for distinguishing between foo
and foo/
anyPath :: (ServerMonad m, MonadPlus m) => m r -> m rSource
Pop any path element and run the handler.
Succeeds if a path component was popped. Fails is the remaining path was empty.
class FromReqURI a whereSource
This class is used by path
to parse a path component into a
value.
The instances for number types (Int
, Float
, etc) use readM
to
parse the path component.
The instance for String
, on the other hand, returns the
unmodified path component.
See the following section of the Happstack Crash Course for
detailed instructions using and extending FromReqURI
:
http://www.happstack.com/docs/crashcourse/RouteFilters.html#FromReqURI
fromReqURI :: String -> Maybe aSource
path :: (FromReqURI a, MonadPlus m, ServerMonad m) => (a -> m b) -> m bSource
Pop a path element and parse it using the fromReqURI
in the
FromReqURI
class.
uriRest :: ServerMonad m => (String -> m a) -> m aSource
Grab the rest of the URL (dirs + query) and passes it to your handler.
Route by host
host :: (ServerMonad m, MonadPlus m) => String -> m a -> m aSource
Guard against the host.
This matches against the host
header specified in the incoming Request
.
Can be used to support virtual hosting, http://en.wikipedia.org/wiki/Virtual_hosting
see also: withHost
withHost :: (ServerMonad m, MonadPlus m) => (String -> m a) -> m aSource
Lookup the host
header in the incoming request and pass it to the handler.
see also: host