snap-extras-0.12.3.0: A collection of useful helpers and utilities for Snap web applications.

Safe HaskellNone
LanguageHaskell2010

Snap.Extras.CoreUtils

Synopsis

Documentation

finishEarly :: MonadSnap m => Int -> ByteString -> m b Source #

Discard anything after this and return given status code to HTTP client immediately.

badReq :: MonadSnap m => ByteString -> m b Source #

Finish early with error code 400

notFound :: MonadSnap m => ByteString -> m b Source #

Finish early with error code 404

serverError :: MonadSnap m => ByteString -> m b Source #

Finish early with error code 500

plainResponse :: MonadSnap m => m () Source #

Mark response as 'text/plain'

jsonResponse :: MonadSnap m => m () Source #

Mark response as 'application/json'

jsResponse :: MonadSnap m => m () Source #

Mark response as 'application/javascript'

easyLog :: (Show t, MonadSnap m) => String -> t -> m () Source #

Easier debug logging into error log. First argument is a category/namespace and the second argument is anything that has a Show instance.

getParam' :: MonadSnap m => ByteString -> m (Maybe ByteString) Source #

Alternate version of getParam that considers empty string Nothing

reqParam :: MonadSnap m => ByteString -> m ByteString Source #

Require that a parameter is present or terminate early.

readParam :: (MonadSnap m, Read a) => ByteString -> m (Maybe a) Source #

Read a parameter from request. Be sure it is readable if it's there, or else this will raise an error.

readMayParam :: (MonadSnap m, Read a) => ByteString -> m (Maybe a) Source #

Try to read a parameter from request. Computation may fail because the param is not there, or because it can't be read.

redirectReferer :: MonadSnap m => m b Source #

Redirects back to the refering page. If there is no Referer header, then redirect to /.

redirectRefererFunc :: MonadSnap m => (Maybe ByteString -> ByteString) -> m b Source #

Redirects back to the refering page. If there is no Referer header, then redirect to /.

dirify :: MonadSnap m => m () Source #

If the current rqURI does not have a trailing slash, then redirect to the same page with a slash added.

undirify :: MonadSnap m => m () Source #

If the current rqURI has a trailing slash, then redirect to the same page with no trailing slash.

maybeBadReq :: MonadSnap m => ByteString -> m (Maybe a) -> m a Source #

fromMaybeM :: Monad m => m a -> m (Maybe a) -> m a Source #

Evaluates an action that returns a Maybe and

(-/-) :: ByteString -> ByteString -> ByteString Source #

Concatenates two URL segments with a / between them. To prevent double slashes, all trailing slashes are removed from the first path and all leading slashes are removed from the second path.