Aborting the computation of Network.HTTP.Lucu.Resource.Resource
in any IO
monads or arrows.
- data Abortion = Abortion {
- aboStatus :: !StatusCode
- aboHeaders :: !Headers
- aboMessage :: !(Maybe String)
- abort :: MonadIO m => StatusCode -> [(String, String)] -> Maybe String -> m a
- abortPurely :: StatusCode -> [(String, String)] -> Maybe String -> a
- abortSTM :: StatusCode -> [(String, String)] -> Maybe String -> STM a
- abortA :: ArrowIO a => a (StatusCode, ([(String, String)], Maybe String)) c
- abortPage :: Config -> Maybe Request -> Response -> Abortion -> String
Documentation
Abortion | |
|
abort :: MonadIO m => StatusCode -> [(String, String)] -> Maybe String -> m aSource
Computation of
aborts the
abort
status headers msgNetwork.HTTP.Lucu.Resource.Resource
monad with given status,
additional response headers, and optional message string.
What this really does is to just throw a special
DynException
. The exception will be caught by
the Lucu.
- If the
Network.HTTP.Lucu.Resource.Resource
is in the /Deciding Header/ or any precedent states, it is possible to use thestatus
and such like as a HTTP response to be sent to the client. - Otherwise the HTTP response can't be modified anymore so the
only possible thing the system can do is to dump it to the
stderr. See
cnfDumpTooLateAbortionToStderr
.
Note that the status code doesn't have to be an error code so you can use this action for redirection as well as error reporting e.g.
abort MovedPermanently [("Location", "http://example.net/")] (Just "It has been moved to example.net")
abortPurely :: StatusCode -> [(String, String)] -> Maybe String -> aSource
This is similar to abort
but computes it with
unsafePerformIO
.