|
| Network.CGI.Protocol | | Portability | non-portable | | Stability | experimental | | Maintainer | bjorn@bringert.net |
|
|
|
|
|
| Description |
| An implementation of the program side of the CGI protocol.
|
|
| Synopsis |
|
| data CGIRequest = CGIRequest {} | | | data Input = Input {} | | | | | type Headers = [(HeaderName, String)] | | | newtype HeaderName = HeaderName String | | | hRunCGI :: MonadIO m => [(String, String)] -> Handle -> Handle -> (CGIRequest -> m (Headers, CGIResult)) -> m () | | | runCGIEnvFPS :: Monad m => [(String, String)] -> ByteString -> (CGIRequest -> m (Headers, CGIResult)) -> m ByteString | | | decodeInput :: [(String, String)] -> ByteString -> [(String, Input)] | | | takeInput :: [(String, String)] -> ByteString -> ByteString | | | getCGIVars :: MonadIO m => m [(String, String)] | | | logCGI :: MonadIO m => String -> m () | | | formEncode :: [(String, String)] -> String | | | urlEncode :: String -> String | | | formDecode :: String -> [(String, String)] | | | urlDecode :: String -> String | | | maybeRead :: Read a => String -> Maybe a | | | replace :: Eq a => a -> a -> [a] -> [a] |
|
|
|
| CGI request
|
|
| data CGIRequest |
| 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 :: ByteString | Raw request body.
|
|
| Instances | |
|
|
| data Input |
| The value of an input parameter, and some metadata.
| | Constructors | | Instances | |
|
|
| CGI response
|
|
| data CGIResult |
| The result of a CGI program.
| | Constructors | | Instances | |
|
|
| type Headers = [(HeaderName, String)] |
|
| newtype HeaderName |
| A string with case insensitive equality and comparisons.
| | Constructors | | Instances | |
|
|
| Running CGI actions
|
|
| hRunCGI |
|
|
| runCGIEnvFPS |
|
|
| Inputs
|
|
| decodeInput |
| :: [(String, String)] | CGI environment variables.
| | -> ByteString | Request body.
| | -> [(String, Input)] | Input variables and values.
| | Gets and decodes the input according to the request
method and the content-type.
|
|
|
| takeInput |
| :: [(String, String)] | CGI environment variables.
| | -> ByteString | Request body.
| | -> ByteString | CONTENT_LENGTH bytes from the request
body, or the empty string if there is no
CONTENT_LENGTH.
| | Takes the right number of bytes from the input.
|
|
|
| Environment variables
|
|
| getCGIVars :: MonadIO m => m [(String, String)] |
| Gets the values of all CGI variables from the program environment.
|
|
| Logging
|
|
| logCGI :: MonadIO m => String -> m () |
| Logs some message using the server's logging facility.
FIXME: does this have to be more general to support
FastCGI etc? Maybe we should store log messages in the
CGIState?
|
|
| URL encoding
|
|
| formEncode :: [(String, String)] -> String |
| Formats name-value pairs as application/x-www-form-urlencoded.
|
|
| urlEncode :: String -> String |
| Converts a single value to the application/x-www-form-urlencoded encoding.
|
|
| formDecode :: String -> [(String, String)] |
| Gets the name-value pairs from application/x-www-form-urlencoded data.
|
|
| urlDecode :: String -> String |
| Converts a single value from the
application/x-www-form-urlencoded encoding.
|
|
| Utilities
|
|
| maybeRead :: Read a => String -> Maybe a |
|
| replace |
| :: Eq a | | | => a | Value to look for
| | -> a | Value to replace it with
| | -> [a] | Input list
| | -> [a] | Output list
| | Replaces all instances of a value in a list by another value.
|
|
|
| Produced by Haddock version 0.8 |