Network.HTTP.Lucu.Abortion
Description
Aborting the computation of Network.HTTP.Lucu.Resource.Resource
in any IO monads or arrows.
Documentation
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 throw a special
Exception. The exception will be caught by the
Lucu system.
- If the
Network.HTTP.Lucu.Resource.Resourceis in the /Deciding Header/ or any precedent states, it is possible to use thestatusand 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.