gitit-0.12: Wiki using happstack, git or darcs, and pandoc.

Safe HaskellNone
LanguageHaskell98

Network.Gitit.Framework

Contents

Description

Useful functions for defining wiki handlers.

Synopsis

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

guardIndex :: GititServerPart () Source

Succeeds if path is an index path: e.g. /foo/bar/.

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 foo, getWikiBase will return /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

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.

validate Source

Arguments

:: [(Bool, String)]

list of conditions and error messages

-> [String]

list of error messages

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.