hsp-0.2: HSP/Request.hs
-----------------------------------------------------------------------------
-- |
-- Module : HSP.Request
-- Copyright : (c) Niklas Broberg 2004,
-- License : BSD-style (see the file LICENSE.txt)
--
-- Maintainer : Niklas Broberg, d00nibro@dtek.chalmers.se
-- Stability : experimental
-- Portability : requires undecidable and overlapping instances
--
-- Defines the RequestEnv object available to HSP pages,
-- either in the form of a complete Request structure,
-- or as a set of CGI environment variables.
-----------------------------------------------------------------------------
module HSP.Request (
getParameter -- ^ :: String -> HSP (Maybe String)
, getParameter_ -- ^ :: String -> HSP String
, getParameterL -- ^ :: String -> HSP [String]
, readParameter -- ^ :: String -> HSP (Maybe a)
, readParameter_ -- ^ :: String -> HSP a
, readParameterL -- ^ :: String -> HSP [a]
, getHTTPMethod -- ^ :: HSP Method
) where
import HSP.Data
import HSP.Exception
import HSP.Data.RequestEnv as Rq
getParameter :: String -> HSP (Maybe String)
getParameter p =
do rq <- getRequest
case Rq.getVarValue rq p of
Just [v] -> return (Just v)
_ -> return Nothing
getParameter_ :: String -> HSP String
getParameter_ p =
do rq <- getRequest
case Rq.getVarValue rq p of
Just [v] -> return v
_ -> throwHSP $ ParameterLookupFailed p
getParameterL :: String -> HSP [String]
getParameterL p =
do rq <- getRequest
case Rq.getVarValue rq p of
Just v -> return v
_ -> return []
readParameter :: Read a => String -> HSP (Maybe a)
readParameter p = getParameter p >>= return . (fmap read)
readParameter_ :: Read a => String -> HSP a
readParameter_ p = getParameter_ p >>= return . read
readParameterL :: Read a => String -> HSP [a]
readParameterL p = getParameterL p >>= return . (fmap read)
-- | Get the HTTP method for the Request.
getHTTPMethod :: HSP Rq.Method
getHTTPMethod = getRequest >>= return . Rq.getMethod