Safe Haskell | None |
---|---|
Language | Haskell98 |
Useful functions for defining wiki handlers.
Synopsis
- withUserFromSession :: Handler -> Handler
- withUserFromHTTPAuth :: Handler -> Handler
- authenticateUserThat :: (User -> Bool) -> AuthenticationLevel -> Handler -> Handler
- authenticate :: AuthenticationLevel -> Handler -> Handler
- getLoggedInUser :: GititServerPart (Maybe User)
- unlessNoEdit :: Handler -> Handler -> Handler
- unlessNoDelete :: Handler -> Handler -> Handler
- guardCommand :: String -> GititServerPart ()
- guardPath :: (String -> Bool) -> GititServerPart ()
- guardIndex :: GititServerPart ()
- guardBareBase :: GititServerPart ()
- getPath :: ServerMonad m => m String
- getPage :: GititServerPart String
- getReferer :: ServerMonad m => m String
- getWikiBase :: ServerMonad m => m String
- uriPath :: String -> String
- isPage :: String -> Bool
- isPageFile :: FilePath -> GititServerPart Bool
- isDiscussPage :: String -> Bool
- isDiscussPageFile :: FilePath -> GititServerPart Bool
- isNotDiscussPageFile :: FilePath -> GititServerPart Bool
- isSourceCode :: String -> Bool
- withMessages :: ServerMonad m => [String] -> m a -> m a
- urlForPage :: String -> String
- pathForPage :: String -> String -> FilePath
- getMimeTypeForExtension :: String -> GititServerPart String
- validate :: [(Bool, String)] -> [String]
- filestoreFromConfig :: Config -> FileStore
Combinators for dealing with users
withUserFromSession :: Handler -> Handler Source #
Run the handler after setting REMOTE_USER
with the user from
the session.
withUserFromHTTPAuth :: Handler -> Handler Source #
Run the handler after setting REMOTE_USER
from the "authorization"
header. Works with simple HTTP authentication or digest authentication.
authenticateUserThat :: (User -> Bool) -> AuthenticationLevel -> Handler -> Handler Source #
Like authenticate
, but with a predicate that the user must satisfy.
authenticate :: AuthenticationLevel -> Handler -> Handler Source #
Require a logged in user if the authentication level demands it. Run the handler if a user is logged in, otherwise redirect to login page.
getLoggedInUser :: GititServerPart (Maybe User) Source #
Returns Just
logged in user or Nothing
.
Combinators to exclude certain actions
unlessNoEdit :: Handler -> Handler -> Handler Source #
unlessNoEdit responder fallback
runs responder
unless the
page has been designated not editable in configuration; in that
case, runs fallback
.
unlessNoDelete :: Handler -> Handler -> Handler Source #
unlessNoDelete responder fallback
runs responder
unless the
page has been designated not deletable in configuration; in that
case, runs fallback
.
Guards for routing
guardCommand :: String -> GititServerPart () Source #
guardIndex :: GititServerPart () Source #
Succeeds if path is an index path: e.g. /foo/bar/
.
guardBareBase :: GititServerPart () Source #
Functions to get info from the request
getPath :: ServerMonad m => m String Source #
Returns the current path (subtracting initial commands like /_edit
).
getPage :: GititServerPart String Source #
Returns the current page name (derived from the path).
getReferer :: ServerMonad m => m String Source #
Returns the contents of the "referer" header.
getWikiBase :: ServerMonad m => m String Source #
Returns the base URL of the wiki in the happstack server.
So, if the wiki handlers are behind a dir
, getWikiBase will
return foo
/foo/
. getWikiBase doesn't know anything about HTTP
proxies, so if you use proxies to map a gitit wiki to /foo/
,
you'll still need to follow the instructions in README.
uriPath :: String -> String Source #
Returns path portion of URI, without initial /
.
Consecutive spaces are collapsed. We don't want to distinguish
Hi There
and Hi There
.
Useful predicates
isPageFile :: FilePath -> GititServerPart Bool Source #
isDiscussPage :: String -> Bool Source #
isSourceCode :: String -> Bool Source #
Combinators that change the request locally
withMessages :: ServerMonad m => [String] -> m a -> m a Source #
Runs a server monad in a local context after setting the "message" request header.
Miscellaneous
urlForPage :: String -> String Source #
Returns encoded URL path for the page with the given name, relative to the wiki base.
pathForPage :: String -> String -> FilePath Source #
Returns the filestore path of the file containing the page's source.
getMimeTypeForExtension :: String -> GititServerPart String Source #
Retrieves a mime type based on file extension.
Simple helper for validation of forms.
filestoreFromConfig :: Config -> FileStore Source #
Returns a filestore object derived from the repository path and filestore type specified in configuration.