cgi-3001.1.6.0: A library for writing CGI programsSource codeContentsIndex
Network.CGI.Monad
Portabilitynon-portable
Stabilityexperimental
Maintainerbjorn@bringert.net
Contents
CGI monad class
CGI monad transformer
Request info
Error handling
Description
Internal stuff that most people shouldn't have to use. This module mostly deals with the internals of the CGIT monad transformer.
Synopsis
class Monad m => MonadCGI m where
cgiAddHeader :: HeaderName -> String -> m ()
cgiGet :: (CGIRequest -> a) -> m a
newtype CGIT m a = CGIT {
unCGIT :: (ReaderT CGIRequest (WriterT Headers m) a)
}
type CGI a = CGIT IO a
runCGIT :: Monad m => CGIT m a -> CGIRequest -> m (Headers, a)
data CGIRequest = CGIRequest {
cgiVars :: (Map String String)
cgiInputs :: [(String, Input)]
cgiRequestBody :: ByteString
}
throwCGI :: (MonadCGI m, MonadIO m) => Exception -> m a
catchCGI :: CGI a -> (Exception -> CGI a) -> CGI a
tryCGI :: CGI a -> CGI (Either Exception a)
handleExceptionCGI :: CGI a -> (Exception -> CGI a) -> CGI a
CGI monad class
class Monad m => MonadCGI m whereSource
The class of CGI monads. Most CGI actions can be run in any monad which is an instance of this class, which means that you can use your own monad transformers to add extra functionality.
Methods
cgiAddHeader :: HeaderName -> String -> m ()Source
Add a response header.
cgiGet :: (CGIRequest -> a) -> m aSource
Get something from the CGI request.
show/hide Instances
CGI monad transformer
newtype CGIT m aSource
The CGIT monad transformer.
Constructors
CGIT
unCGIT :: (ReaderT CGIRequest (WriterT Headers m) a)
show/hide Instances
type CGI a = CGIT IO aSource
A simple CGI monad with just IO.
runCGIT :: Monad m => CGIT m a -> CGIRequest -> m (Headers, a)Source
Run a CGI action.
Request info
data CGIRequest Source
The input to a CGI action.
Constructors
CGIRequest
cgiVars :: (Map String String)Environment variables.
cgiInputs :: [(String, Input)]Input parameters. For better laziness in reading inputs, this is not a Map.
cgiRequestBody :: ByteStringRaw request body. To avoid memory leaks, this is the empty string if the request body has been interpreted as inputs in application/x-www-form-urlencoded or multipart/form-data format.
show/hide Instances
Error handling
throwCGI :: (MonadCGI m, MonadIO m) => Exception -> m aSource
Throw an exception in a CGI monad. The monad is required to be a MonadIO, so that we can use throwIO to guarantee ordering.
catchCGI :: CGI a -> (Exception -> CGI a) -> CGI aSource
Catches any expection thrown by a CGI action, and uses the given exception handler if an exception is thrown.
tryCGI :: CGI a -> CGI (Either Exception a)Source
Catches any exception thrown by an CGI action, and returns either the exception, or if no exception was raised, the result of the action.
handleExceptionCGI :: CGI a -> (Exception -> CGI a) -> CGI aSource
Deprecated version of catchCGI. Use catchCGI instead.
Produced by Haddock version 0.9